UDP

来源:互联网 发布:淘宝企业开店店铺名称 编辑:程序博客网 时间:2024/05/22 02:14
/* *UDP:一种面向无连接的数据传输机制。优点,速度快;缺点,不安全。 */package classfile;import java.net.*;import java.awt.*;import java.awt.event.*;import java.util.*;import java.text.*;/** *模拟UDP聊天。 */public class UDPDemo{public static void main(String[] args){new UDPDemo();}//定义发送端窗体private Frame sendFrame;private TextArea sendTextArea;private MenuBar sendMenuBar;private Menu sendMenu;private MenuItem sendMenuItem;//定义接收端窗体private Frame receiveFrame;private TextArea receiveTextArea;//定义发送端服务DatagramSocket sendSocket;DatagramPacket sendPacket;byte[] sendText;//定义接收端服务DatagramSocket receiveSocket;DatagramPacket receivePacket;byte[] receiveText = new byte[1024*64];String receiveString;//启动UDP对话框public UDPDemo(){new Thread(new Runnable(){public void run(){receiveInitialize();}}).start();new Thread(new Runnable(){public void run(){sendInitialize();}}).start();}//初始化对话的发送端private void sendInitialize(){sendFrame = new Frame("UDP通讯发送端");sendTextArea = new TextArea();sendMenuBar = new MenuBar();sendMenu = new Menu("发送信息");sendMenuItem = new MenuItem("发送");sendFrame.setBounds(300,310,400,200);sendFrame.setResizable(false);sendMenu.add(sendMenuItem);sendMenuBar.add(sendMenu);sendFrame.setMenuBar(sendMenuBar);sendFrame.add(sendTextArea);try{sendSocket = new DatagramSocket();}catch (Exception e){e.printStackTrace();}addSendListener();sendFrame.setVisible(true);}//初始化对话的接收端private void receiveInitialize(){receiveFrame = new Frame("UDP通讯接收端");receiveTextArea = new TextArea();receiveFrame.setBounds(300,100,400,200);receiveFrame.setResizable(false);receiveFrame.add(receiveTextArea);try{receivePacket = new DatagramPacket(receiveText,receiveText.length);receiveSocket = new DatagramSocket(13000);}catch (Exception e){e.printStackTrace();}addReceiveListener();receiveFrame.setVisible(true);receiveMessage();}//添加发送端的监听器private void addSendListener(){sendFrame.addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){System.exit(0);}});sendMenuItem.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){sendMessage();}});}//添加接收端的监听器private void addReceiveListener(){receiveFrame.addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){System.exit(0);}});}//实现发送端服务private void sendMessage(){sendText = sendTextArea.getText().getBytes();try{sendPacket = new DatagramPacket(sendText,sendText.length,InetAddress.getByName("127.0.0.1"),13000);sendSocket.send(sendPacket);}catch (Exception e){e.printStackTrace();}sendTextArea.setText("");}//实现接收端服务private void receiveMessage(){while (true)//保证接收端能够一直接受数据{try{receiveSocket.receive(receivePacket);}catch (Exception e){e.printStackTrace();}receiveString = new String(receivePacket.getData(),0,receivePacket.getLength());receiveTextArea.append(new SimpleDateFormat("yyyy-MM-dd E hh:mm:ss a").format(new Date())+"\r\n");receiveTextArea.append("发送端主机地址:"+receivePacket.getAddress().getHostAddress()+"\r\n");receiveTextArea.append("发送端端口号:"+receivePacket.getPort()+"\r\n");receiveTextArea.append(receiveString+"\r\n\r\n");}}}

0 0
原创粉丝点击