失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > java带图形用户的聊天_java:带有图形化界面 可以发送和接收的聊天工具

java带图形用户的聊天_java:带有图形化界面 可以发送和接收的聊天工具

时间:2021-12-05 00:11:03

相关推荐

java带图形用户的聊天_java:带有图形化界面 可以发送和接收的聊天工具

/**

根据UDP协议,设计一个聊天程序,可以发送和接收,并有相应的图形化界面

*/

import .*;

import java.awt.*;

import java.awt.event.*;

//发送信息

class ChatSend implements Runnable

{

private Button but; //发送按钮

private TextArea tain; //输入文本

private TextArea taout; //接收信息,并显示自己的信息

public ChatSend(Button but, TextArea tain, TextArea taout)

{

this.but = but;

this.tain = tain;

this.taout = taout;

}

public void run()

{

//添加按钮监听,发送数据

but.addActionListener(new ActionListener()

{

public void actionPerformed(ActionEvent e)

{

try

{

//创建Socket服务

DatagramSocket SendSocket = new DatagramSocket();

//获取输入文本区域里的字符串

String line = tain.getText();

byte[] buf = line.getBytes();

//数据打包,发送

DatagramPacket dp = new DatagramPacket(buf, buf.length, InetAddress.getByName("10.22.72.144"), 4008);

SendSocket.send(dp);

tain.setText("");

taout.append(line +"\r\n");

SendSocket.close();

}

catch(Exception ex)

{

System.out.println(e.toString());

}

}

});

//文本框中输入回车键监听

tain.addKeyListener(new KeyAdapter()

{

public void keyPressed(KeyEvent e)

{

if(e.getKeyCode() == e.VK_ENTER)

{

try

{

//创建Socket服务

DatagramSocket SendSocket = new DatagramSocket();

//获取文本区域里的字符串

String line = tain.getText();

byte[] buf = line.getBytes();

//数据打包发送

DatagramPacket dp = new DatagramPacket(buf, buf.length, InetAddress.getByName("10.22.72.144"), 4008);

SendSocket.send(dp);

tain.setText("");

taout.append(line +"\r\n");

SendSocket.close();

}

catch(Exception ex)

{

System.out.println(e.toString());

}

}

}

});

}

}

//接收信息

class ChatReceive implements Runnable

{

private TextArea taout; //接收信息区域

public ChatReceive(TextArea taout)

{

this.taout = taout;

}

public void run()

{

while(true)

{

try

{

//创建Socket服务

DatagramSocket RecSocket = new DatagramSocket(5009);

//创建数据包,接收数据

byte[] buf = new byte[1024];

DatagramPacket dp = new DatagramPacket(buf, buf.length);

RecSocket.receive(dp);

//获取数据信息

String ip = dp.getAddress().getHostAddress();

String data = new String(dp.getData(), 0, dp.getLength());

//信息添加到文本区域

taout.append(ip +":"+data +"\r\n");

RecSocket.close();

}

catch(Exception ex)

{

System.out.println(ex.toString());

}

}

}

}

class Chat

{

public static void main(String[] args)

{

//设计图形化界面

Frame f = new Frame("我聊");

f.setSize(400, 400);

f.setLocation(300, 250);

f.setLayout(new FlowLayout());

//创建部件

TextArea tain = new TextArea();

TextArea taout = new TextArea();

Button but = new Button("发送");

taout.setColumns(50);

taout.setRows(18);

tain.setColumns(40);

tain.setRows(2);

f.add(taout);

f.add(tain);

f.add(but);

f.setVisible(true);

//窗口关闭监听

f.addWindowListener(new WindowAdapter()

{

public void windowClosing(WindowEvent e)

{

f.setVisible(false);

System.exit(0);

}

});

//创建并启动发送、接收线程

new Thread(new ChatSend(but, tain, taout)).start();

new Thread(new ChatReceive(taout)).start();

}

}

如果觉得《java带图形用户的聊天_java:带有图形化界面 可以发送和接收的聊天工具》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。