开发工具:
文件大小: 381byte
下载次数: 0
上传时间: 2015-06-30
详细说明: import java.awt.*; import java.awt.event.*; import java.net.*; public class Chat { Frame f = new Frame("聊天室"); TextField tfIP = new TextField(15); List lst = new List(6); DatagramSocket ds; /* * 由于DatagramSocket的构造函数声明可能抛出异常,我们的程序需要用try…catch语句 * 进行异常捕获处理,所以不能直接在这里调用DatagramSocket的构造函数对ds进行初始化, * 我们需要将ds的初始化放在Chat类的构造函数中去完成。 */ public Chat() { try { ds = new DatagramSocket(3000); } catch (Exception ex) { ex.printStackTrace(); } } public static void main(String[] args) { Chat chat = new Chat(); chat.init(); } public void init() { f.setSize(300, 300); f.add(lst); Panel p = new Panel(); p.setLayout(new BorderLayout()); p.add("West", tfIP); TextField tfData = new TextField(20); p.add("East", tfData); f.add("South", p); new Thread(new Runnable() { public void run() { byte buf[] = new byte[1024]; DatagramPacket dp = new DatagramPacket(buf, 1024); while (true) { try { ds.receive(dp); lst.add(new String(buf, 0, dp.getLength()) + ":from" + dp.getAddress().getHostAddress(), 0); } catch (Exception e) { e.printStackTrace(); } } } }).start(); f.setVisible(true); f.setResizable(false);// 限制用户改变窗口的大小 // 增加关闭窗口的事件处理代码 f.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { ds.close();// 程序退出时,关闭Socket,释放相关资源 f.setVisible(false); f.dispose(); System.exit(0); } }); // 增加在消息文本框中按下回车键的事件处理代码 tfData.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { // 取出文本框中的消息字符串,并将其转换成字节数组 byte[] buf; buf = e.getActionCommand().getBytes(); try { DatagramPacket dp = new DatagramPacket(buf, buf.length, InetAddress.getByName(tfIP.getText()), 3000); ds.send(dp); } catch (Exception ex) { ex.printStackTrace(); } /* * 上面的Exception的引用变量名不能为e,而是改写成了ex,因为e已经在 * actionPerformed方法中作为形式参数变量名被定义过了。 */ ((TextField) e.getSource()).setText(""); } }); } } ...展开收缩
(系统自动生成,下载前可以参看下载内容)
下载文件列表
相关说明
- 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
- 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度。
- 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
- 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
- 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
- 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.