浏览 2884 次
锁定老帖子 主题:简单的UDP 聊天室
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-06-26
刚学习JAVA socket 时的一个例子,希望对新手有用。
import java.awt.BorderLayout; import java.awt.Button; import java.awt.Frame; import java.awt.Label; import java.awt.Panel; import java.awt.TextArea; import java.awt.TextField; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.awt.event.*; class Client extends Frame implements Runnable{ Panel panel; TextArea ta; TextField tf2,tf_host,tf_name; Button b1; Label l; byte sdata[]; byte rdata[]; InetAddress ad; DatagramPacket out,in; DatagramSocket ds1,ds2; String mm; Thread tt; public static void main(String[] args) { new Client("华软UDP聊天室"); } public Client(String ss){ super(ss); panel=new Panel(); ta=new TextArea(12,50); panel.add(ta); panel.add(new Label("主机:")); tf_host=new TextField("127.0.0.1",15); tf2=new TextField("This is a text",40); b1=new Button("发送消息"); l=new Label("消息:"); panel.add(tf_host); panel.add(new Label(" 昵称:")); tf_name=new TextField("猪八戒",10); panel.add(tf_name); panel.add(l); panel.add(tf2); panel.add(b1); add(panel); setBounds(100,100,400,330); setVisible(true); validate(); addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent dd){ System.exit(0); } }); b1.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent ss){ sdata=(tf_name.getText().trim()+" 说:"+tf2.getText().trim()).getBytes(); try{ ad=InetAddress.getByName(tf_host.getText().trim()); out=new DatagramPacket(sdata,sdata.length,ad,666); //端口666 ds1=new DatagramSocket(); ds1.send(out); ta.append(tf_name.getText().trim()+" 说:"+tf2.getText()+"\n"); } catch(Exception dd){ ta.append("error"); } } }); tt=new Thread(this); tt.start(); } public void run(){ rdata=new byte[100]; try{ in=new DatagramPacket(rdata,rdata.length); ds2=new DatagramSocket(888); //监听端口888 }catch(Exception dd){ ta.append("Error"); } while(true){ try{ ds2.receive(in); mm=new String(in.getData(),0,in.getLength()); ta.append(mm+"\n"); }catch(Exception dd){ ta.append("Error2\n"); } } } }另外一端也很简单,只要把上面的程序端口那里,把666 和888 调换就可以了。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |