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
- UDP
- UDP
- udp
- UDP
- UDP
- udp
- UDP
- UDP
- udp
- udp
- UDP
- UDP
- UDP
- UDP
- UDP
- UDP
- udp
- UDP
- spring集成 quartz
- 程序猿的未来与学习建议
- JAVA 线程池使用
- Java杂谈三之判断素数以及穷举素数
- jQuery_review之table中根据行选中,进行背景变色和radio选中
- UDP
- getch getche getchar的区别和缓冲区的概念
- 关于使用UDP套接字进行本地进程通信
- 假期算法学习
- 同过apache-commons-id.jar生成32为主键id
- rdryfyuguiygiuti
- ZOJ 1649 Rescue
- 从计算机复试看中国教育——一个面试官的经历
- new delete问题