浏览 2101 次
锁定老帖子 主题:java UDP 通信
该帖已经被评为隐藏帖
|
|
---|---|
作者 | 正文 |
发表时间:2008-06-01
最后修改:2011-04-10
import java.net.*; import java.io.*; import java.awt.*; class UDPCommunicationServer extends Frame { private Label label1, label2; private Panel panel1, panel2; private TextField textfield; private String name, name1; private TextArea textarea; private DatagramSocket sendSocket, receiveSocket; private DatagramPacket sendPacket, receivePacket; public UDPCommunicationServer() { super("通信控制台:"); panel1 = new Panel(); panel1.setLayout(new BorderLayout()); label1 = new Label("通话记录"); textarea = new TextArea(10, 20); textarea.setText("欢迎你!"); panel1.add("North", label1); panel1.add("Center", textarea); add("North", panel1); panel2 = new Panel(); panel2.setLayout(new BorderLayout()); label2 = new Label("发言:"); panel2.add("Center", label2); textfield = new TextField(20); panel2.add("South", textfield); add("Center", panel2); setVisible(true); try { sendSocket = new DatagramSocket(); receiveSocket = new DatagramSocket(5000); } catch (SocketException e) { e.printStackTrace(); System.exit(1); } } public void waitForPacket() { while (true) { try { byte[] buf = new byte[100]; receivePacket = new DatagramPacket(buf, buf.length); receiveSocket.receive(receivePacket); name = receivePacket.getAddress().toString(); if (name1 != name) { textarea.append("\n来自主机:" + name + "\n端口:" + receivePacket.getPort()); } textarea.append("\n客户:"); byte[] data = receivePacket.getData(); String receivedString = new String(data); textarea.append(receivedString); name1 = name; } catch (IOException e) { textarea.append("\n网络通信出现错误,问题在" + e.toString()); } } } public void processEvent(AWTEvent e) { if (e.getID() == Event.WINDOW_DESTROY) { setVisible(false); dispose(); System.exit(0); } super.processEvent(e); } public boolean action(Event e, Object o) { try { textarea.append("\n服务器:"); String string = o.toString(); textarea.append(string); byte[] databyte = new byte[100]; databyte = string.getBytes(); sendPacket = new DatagramPacket(databyte, string.length(), InetAddress.getByName(name), 5001); sendSocket.send(sendPacket); } catch (IOException ioe) { textarea.append("网络通信出现错误,问题在" + ioe.toString()); } return true; } } public class UDPServer { public static void main(String[] args) { UDPCommunicationServer cs = new UDPCommunicationServer(); // cs.setVisible(true); cs.waitForPacket(); } } import java.net.*; import java.io.*; import java.awt.*; import java.applet.*; public final class Client extends Applet{ private Label label1,label2; private Panel panel1,panel2; private TextField textfield; private TextArea textarea; private DatagramSocket sendSocket,receiveSocket; private DatagramPacket sendPacket,receivePacket; public void init(){ setBackground(Color.gray); setLayout(new BorderLayout()); panel1=new Panel(); panel1.setLayout(new BorderLayout()); label1=new Label("通话记录"); textarea=new TextArea(10,20); textarea.setText("欢迎你!"); panel1.add("North",label1); panel1.add("Center",textarea); add("North",panel1); label2=new Label("发言:"); panel2=new Panel(); panel2.add("Center",label2); textfield=new TextField(20); textfield.setText(""); panel2.add("South",textfield); add("Center",panel2); setVisible(true); } public void start(){ waitForPackets(); } public void waitForPackets(){ try{ sendSocket=new DatagramSocket(); receiveSocket=new DatagramSocket(5001); }catch(SocketException e){ textarea.append("不能打开数据报Socket,或数据报Socket无法与指定端口连接!"); } while(true){ try{ byte []buf=new byte[100]; receivePacket=new DatagramPacket(buf,buf.length); receiveSocket.receive(receivePacket); textarea.append("\n服务器:"); byte[]data=receivePacket.getData(); String receivedString=new String(data); textarea.append(receivedString); }catch (IOException e){ textarea.append("\n网络通信出现错误,问题在"+e.toString()); } } } public boolean action(Event e,Object o){ try{ textarea.append("\n客户端:"); String string=o.toString(); textarea.append(string); byte[]databyte=new byte[100]; databyte=string.getBytes(); sendPacket=new DatagramPacket( databyte,string.length(),InetAddress.getByName("localhost"),5000); sendSocket.send(sendPacket); }catch(IOException ioe){ textarea.append("网络通信出现错误,问题在"+ioe.toString()); } return true; } } 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |