`
moshangchenzi
  • 浏览: 51899 次
  • 性别: Icon_minigender_1
  • 来自: 南宁
社区版块
存档分类
最新评论

JDK6.0学习笔记(十一)UDP通信服务器

阅读更多
  1. /**
  2.  * UDP开发,无连接的Socket操作采用UDP协议,一个数据报文是一个独立的单元,
  3.  * 包含所有这次投递的信息:目的地址和要发送的内容。
  4.  * UDP模式下,Socket不需要连接到一个目的地Socket,只是简单的投出数据
  5.  * 无连接的操作是高效和快速的,但是数据传输的可靠性不佳
  6.  * 常用于音频和视频的传输,偶尔丢失一两个数据包,不会对接受效果产生很大的影响
  7.  * UDP不提供数据的分组,不能对数据包进行排序,报文发出后,无法得知其是否安全到达
  8.  * 
  9.  * UDP数据的接受方
  10.  * 
  11.  * 需要接受侦听的端口号作为输入参数
  12.  * */
  13. import java.net.InetAddress;
  14. import java.net.DatagramPacket;
  15. import java.net.DatagramSocket;
  16. public class UDPReceive {
  17.     public static void main(String args[]) {
  18.         try {
  19.             if (args.length != 1)
  20.                 throw new IllegalArgumentException("Wrong number of args");
  21.             int port = Integer.parseInt(args[0]);
  22.             DatagramSocket dsocket = new DatagramSocket(port);// 创建实例,并固定监听port端口的报文
  23.             byte[] buffer = new byte[2048];// 接受的数据存放到buffer的字节数组当中
  24.             DatagramPacket packet = new DatagramPacket(buffer, buffer.length);// 处理报文
  25.             for (;;) {
  26.                 dsocket.receive(packet);// 接受数据报文到packet中,产生一个阻塞,
  27.                 // 程序运行到这执行内部的循环,直到特定的事件被触发
  28.                 String msg = new String(buffer, 0, packet.getLength());
  29.                 System.out.println(packet.getAddress().getHostName() + ": "
  30.                         + msg);
  31.                 packet.setLength(buffer.length);
  32.             }
  33.         } catch (Exception e) {
  34.             System.err.println(e);
  35.         }
  36.     }
  37. }
 
  1. /**
  2.  * UDP数据的发送方
  3.  * 
  4.  * 需要接受3个输入参数,目标主机名、目标端口号、要发送的字符串 作为输入参数
  5.  * */
  6. import java.net.InetAddress;
  7. import java.net.DatagramPacket;
  8. import java.net.DatagramSocket;
  9. public class UDPSend 
  10. {
  11.     public static void main(String args[]) 
  12.   {
  13.     try 
  14.     {
  15.         if (args.length < 3)     
  16.         throw new IllegalArgumentException("Wrong number of args");
  17.       String host = args[0];
  18.       int port = Integer.parseInt(args[1]);
  19.       byte[] message;
  20.       String msg = args[2]; 
  21.       message = msg.getBytes();
  22.       InetAddress address = InetAddress.getByName(host);
  23.       DatagramPacket packet = new DatagramPacket(message, message.length,address, port);
  24.                                              //处理报文
  25.       DatagramSocket dsocket = new DatagramSocket(); // 创建实例,没有特定监听的端口,用出客户端的编程
  26.       dsocket.send(packet);//发送报文到packet
  27.       dsocket.close();//关闭 DatagramSocket
  28.     }
  29.     catch (Exception e) 
  30.     {
  31.         System.err.println(e);
  32.     }
  33.   }
  34. }
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics