admin 管理员组文章数量: 887053
2024年1月14日发(作者:handicap是什么意思)
JAVA实现即使通讯的代码 图形界面
//////////////////////////////////////////////////////////
//用 Java 编写的聊天器,可以当 服务器 或者 是客户端,一对一,自定义对方 IP 及 端口。
//虽然名为 LANChat ,但不限于局域网。对象甚至可以是某种 “服务器”。
///////////////////////////////////////////////////////////
import .*;
import .*;
import .*;
import .*;
import .*;
//////////////////////////////////////////////////////////
public class LANChatV12{
public static void main(String args[]){
LoginFrame lf = new LoginFrame("输入目标");
();
}
}
/////////////////////////////////////////////////////////
class LoginFrame extends JFrame{
JButton BOK;
JLabel LdesAddr, Lport;
JTextField TFdesAddr, TFport;
String desAddr, port;
LoginFrame(){}
LoginFrame(String title){
super(title);
Frame t = this;
BOK = new JButton("确定");
LdesAddr = new JLabel("目标 IP");
Lport = new JLabel("端口 ");
TFdesAddr = new JTextField(desAddr,12);
TFport = new JTextField(port,12);
//oChar('*');
ionListener(new BOKListener(t));
setBackground();
setBounds(350,250,200,128);
setLayout(new FlowLayout(,5,7));
add(LdesAddr);
add(TFdesAddr);
add(Lport);
add(TFport);
add(BOK);
setResizable(false);
//setVisible(true);
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
(0);
}
});
}
class BOKListener implements ActionListener{
Frame t;
BOKListener(){}
BOKListener(Frame t){
this.t = t;
}
public void actionPerformed(ActionEvent e){
desAddr = t();
port = t();
ible(false);
Messenger m = new Messenger(desAddr, port);
();
}
}
}
/////////////////////////////////////////////////////
class Messenger extends Thread{
String desAddr;
String port;
int iport;
TextArea content, send;
JButton Bsend;
ChatFrame cf;
String title;
Socket client;
ServerSocket ss;
OutputStreamWriter osw = null;
InputStreamReader isr = null;
BufferedReader br;
String line;
boolean flag;//端口号是否正确
boolean cbc; //can be client ?
int tryTurns = 3; //客户方式尝试的次数
Messenger(){}
Messenger(String desAddr, String port){
super("LANChatMessenger");
content = new TextArea("",0,0,BARS_VERTICAL_ONLY);
send = new TextArea("",0,0,BARS_VERTICAL_ONLY);
Bsend = new JButton("发送");
bled(false);
title = "与 " + desAddr +" 聊天";
flag = true;
cbc = true;
cf = new ChatFrame(title, content, send, Bsend);
();
r = desAddr;
= port;
try{
iport = nt(port);
}catch(NumberFormatException nfe){
("非法的 端口,程序 4 秒后关闭。n");
flag = false;
}
}
public void run(){
if(! flag){
try{
(4000);
}catch(InterruptedException ie){
(0);
}
(0);
}
("正在以客户端方式进行连接.....n");
do{
cbc = true;
try{
client = new Socket(desAddr,iport);
}catch(Exception e){
("错误,无法连接地址:" + desAddr +":"+ port + 'n');
("等待 1 秒再连接,剩余 [ " + (tryTurns -1) + " ]次。n");
cbc = false;
try{
(1000);
}catch(InterruptedException ie){
(0);
}
}
--tryTurns;
}while((tryTurns > 0) && ! cbc);
if(cbc){
("连接成功,可以开始了。" + "nn");
le("与 " + desAddr + ":" + port + " 聊天");
tFocus();
}
else{
("客户端方式失败,现在启动服务器并等待连接。" + 'n');
try{
ss = new ServerSocket(iport);
}catch(IOException ioe){
("n无法创建服务,程序将在 4 秒后退出。n");
try{
(4000);
}catch(InterruptedException ie){
(0);
}
(0);
}
try{
le("等待连接中....在端口:" + port);
client = ();
}catch(Exception e){
("() 方法失败,程序将在 4 秒后退出。n");
try{
(4000);
}catch(InterruptedException ie){
(0);
}
(0);
}
("连接成功,可以开始。" + tAddress().toString() + "nn");
le("与 " + tAddress().toString() + ":" + port + " 聊天");
tFocus();
}
try{
osw = new OutputStreamWriter(putStream());
isr = new InputStreamReader(utStream());
br= new BufferedReader(isr);
//("nbr createdn");
}catch(IOException ioe){
("创建流错误,程序将在 4 秒后退出。n");
try{
(4000);
}catch(InterruptedException ie){
(0);
}
(0);
}
bled(true);
ionListener(new BsendListener(content, send, osw));
try{
line = ne();
}catch(IOException ioe){
("流读取错误,程序将在 4 秒后退出。n");
try{
(4000);
}catch(InterruptedException ie){
(0);
}
(0);
}
while(true){
("他说 : " + line + 'n');
try{
(1000);
}catch(InterruptedException ie){
(0);
}
try{
line = ne();
}catch(IOException ioe){
("流读取错误,程序将在 4 秒后退出。n");
try{
(4000);
}catch(InterruptedException ie){
(0);
}
(0);
}
}
}
class BsendListener implements ActionListener{
TextArea content;
TextArea send;
OutputStreamWriter osw;
BsendListener(TextArea content, TextArea send, OutputStreamWriter osw){
t = content;
= send;
= osw;
}
public void actionPerformed(ActionEvent e){
String input;
input = t();
if(() > 0){
("我说 : " + input + 'n');
try{
(input + 'n', 0, () + 1);
();// 晕
}catch(Exception ee){
("不能发送 "" + input + "" , 发生了错误 : " +sage() + 'n');
}
t("");
tFocus();
}
}
}
}
///////////////////////////////////////////////////////////////
class ChatFrame extends JFrame{
TextArea content;
TextArea send;
JButton Bsend;
ChatFrame(){}
ChatFrame(String frameTitle,TextArea content, TextArea send, JButton Bsend){
super(frameTitle);
t = content;
= send;
= Bsend;
table(true);
setLayout(null);
setBounds(300,100,510,500);
add(content);
kground();
nds(2,0,500,340);
usable(true);
add(send);
nds(2,355,500,70);
usable(true);
add(Bsend);
nds(410,432,60,30);
setResizable(false);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
}
版权声明:本文标题:JAVA的即时通讯源代码 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/free/1705219532h477376.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论