欢迎来到天天文库
浏览记录
ID:43403310
大小:32.00 KB
页数:4页
时间:2019-09-30
《Java聊天室代码》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、基于UDP的简单java聊天室代码./***这个一个简单的利用数据报协议传送信息的聊天测试程序。*程序由三个简单的组件构成,分别是一个List,用于接收信息,*一个JComboBox,用于输入对方ip地址,和一个JTextField,*用于编辑信息。*聊天双方的程序必须监听同一个固定的端口,只有这样才能实现*相互通信。当输入的ip地址为localhost时,自己会收到自己*发送的信息。*/packagechat;importjava.util.*;importjava.net.*;importjava.io.*;importj
2、ava.awt.*;importjava.awt.event.*;importjavax.swing.*;publicclassChatextendsJFrame{PrintStreamps=null;privateintport;//端口java.awt.Listlist=newjava.awt.List(20);//接收信息列表Vectorvector=newVector();//已发IP列表JComboBoxipField=newJComboBox(vector);//发送对象ipJTextFieldtextField=newJ
3、TextField(20);//编辑发送内容组件DatagramSocketsocket=null;/***MethodChat***/publicChat(intport){//TODO:在这添加你的代码this.port=port;try{ps=newPrintStream("log.txt");}catch(FileNotFoundExceptione){e.printStackTrace();}try{socket=newDatagramSocket(port);}catch(Exceptione){e.printStackT
4、race(ps);}ContainercontentPane=this.getContentPane();ipField.setPreferredSize(newDimension(120,20));ipField.setEditable(true);JPanelpanel=newJPanel();panel.setLayout(newBoxLayout(panel,BoxLayout.X_AXIS));contentPane.add(list,BorderLayout.CENTER);contentPane.add(panel,Bo
5、rderLayout.SOUTH);panel.add(ipField);panel.add(textField);receive();addListener();}/***加入并处理事件听侦*/voidaddListener(){//当在textField组件中输入内容后按下回车键,即发送出输入信息。textField.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){//sendmessagebyte[]buf=textFie
6、ld.getText().getBytes();Stringip=(String)ipField.getSelectedItem();try{DatagramPacketdp=newDatagramPacket(buf,buf.length,InetAddress.getByName(ip),port);//利用数据报协议发送信息socket.send(dp);if(!vector.contains(ip))vector.add(ip);}catch(Exceptionex){ipField.setSelectedItem(null)
7、;ex.printStackTrace(ps);}textField.setText("");}});addWindowListener(newWindowAdapter(){publicvoidwindowClosing(WindowEvente){socket.close();System.exit(0);}});}/***接收信息线程*/voidreceive(){newThread(newRunnable(){publicvoidrun(){byte[]buf=newbyte[1024];while(true){try{Dat
8、agramPacketdp=newDatagramPacket(buf,buf.length);socket.receive(dp);Stringmessage=newString(buf,0,dp.getLength(
此文档下载收益归作者所有