Java.聊天系统.UDP

//Chat.java //聊天软件 import java.awt.*; import java.awt.event.*; import java.net.*; public class Chat { DatagramSocket ds; //主框架 Frame f=new Frame("聊天系统"); //目标IP输入文本框 TextField tfIP=new TextField(15); //列表框:用于显示接收到的所有信息 List lst=new List(6); public Chat(){ try{ ds = new DatagramSocket(3000); } catch(Exception e){ e.printStackTrace(); } new Thread(new Runnable(){ public void run(){ byte [] buf = new byte[1024]; DatagramPacket dp = new DatagramPacket(buf,1024); while(true){ try{ ds.receive(dp); } catch(Exception e){ e.printStackTrace(); } lst.add(dp.getAddress().getHostAddress(),0); lst.add(new String(buf,0,dp.getLength()),1); lst.add("",2); } } }).start(); } public static void main(String[] args) { //实例化Chat对象 Chat chat=new Chat(); //初始化 chat.init(); } //初始化方法 public void init(){ //设置主窗口大小 f.setSize(300,300); //添加窗口监听器 f.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ ds.close(); f.setVisible(false); f.dispose(); System.exit(0); } }); //将列表框添加到主框架 f.add(lst); //设置默认目标IP tfIP.setText("192.10.12.101"); //创建面板 Panel pl=new Panel(); //设置面板的布局管理器为BorderLayout pl.setLayout(new BorderLayout()); //创建信息输入文本框 TextField tfData=new TextField(20); //为信息输入文本框添加回车事件处理代码 tfData.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent ex){ //网络消息发送相关代码 byte [] buf = ex.getActionCommand().getBytes(); //byte [] buf = ((TextField)ex.getSource()).getText().getBytes();//和上面那行一样的效果。 try{ DatagramPacket dp=new DatagramPacket(buf,buf.length,InetAddress.getByName(tfIP.getText()),3000); ds.send(dp); } catch(Exception e){ e.printStackTrace(); } //数据发送后清空文本框内的内容 ((TextField)ex.getSource()).setText(""); //ex.getSource方法的应用 } }); //将IP文本框与消息输入文本框添加到面板Pl上 pl.add(tfIP,"West"); pl.add(tfData,"East"); //将面板添加到主框架上 f.add(pl,"South"); //设置主框架可见 f.setVisible(true); //设置窗口大小不可变 f.setResizable(false); } }

你可能感兴趣的:(exception,框架,String,聊天,import,byte)