用Java编写的UDP协议简单聊天室
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
用Java编写的UDP协议简单聊天室:
package com;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import .*;
public class Chat {
Frame frame = new Frame("个人聊天室");
TextField tfip = new TextField(15);// 用户输入IP地址的文本框List list = new List();// 用于显示接收消息的列表框DatagramSocket ds;
public Chat() {
try {
ds = new DatagramSocket(50000);
} catch (SocketException e) {
e.printStackTrace();
}
new Thread(new Runnable() {
public void run() {
try {
byte buf[] = new byte[1024];
DatagramPacket dp = new DatagramPacket(buf, 1024); while (true) {
ds.receive(dp);
System.out.println("接收OK");
list.add(new String(buf, 0, dp.getLength()) + ":from"
+ dp.getAddress().getHostAddress(), 0);
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
}
public static void main(String[] args) {
Chat chat = new Chat();
chat.init();
}
public void init() {
frame.setSize(300, 300);
frame.add(list);
Panel p = new Panel();
p.setLayout(new BorderLayout());
// p.add(tfip,"West");
p.add("West", tfip);
TextField tfdata = new TextField(20);
p.add("East", tfdata);
frame.add("South", p);
frame.setVisible(true);
frame.setResizable(false);// 限制用户设置窗体的大小
frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { frame.setVisible(false);
frame.dispose();
System.exit(0);
});
tfdata.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// 有关网络发送信息的动作
byte[] buf = e.getActionCommand().getBytes();
try {
DatagramPacket dp = new DatagramPacket(buf, buf.length, InetAddress.getByName(tfip.getText()), 50000);
ds.send(dp);
} catch (Exception e1) {
e1.printStackTrace();
}
((TextField) e.getSource()).setText("");// 清空文本框内容
}
});// 填写完内容后按下回车所触发的事件
}
}