Socket网络--UDP

UDP传输

UDP 是User Datagram Protocol的简称, 中文名是用户数据包协议,是 OSI 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETF RFC 768是UDP的正式规范。

 UDP传输发送端与接收端的建立

创建UDP传输的发送端:
   1.建立UDP的socket服务

  DatagramSocket  ds= new DatagramSocket();//DatagramSocket是用来发送和接收数据报包的套接字

数据报套接字是包投递服务的发送或接收点。每个在数据报套接字上发送或接收的包都是单独编址和路由的。从一

台机器发送到另一台机器的多个包可能选择不同的路由,也可能按不同的顺序到达。在 DatagramSocket 上总是启

用 UDP 广播发送。为了接收广播包,应该将 DatagramSocket 绑定到通配符地址。在某些实现中,将 DatagramSocket

绑定到一个更加具体的地址时广播包也可以被接收。

   2.将要发送的数据封装到数据包

  String str = "";

  byte[] buf = str.getBytes();

  DatagramPacket dp = new DatagramPacket(buf,buf.length,InetAddress.getByName("ip地址"),端口);

  //数据报包,数据报包用来实现无连接包投递服务。每条报文仅根据该包中包含的信息从一台机器路由到另一台机器。

   从一台机器发送到另一台机器的多个包可能选择不同的路由,也可能按不同的顺序到达。不对包投递做出保证。

   3.通过UDP的socket服务将数据包发送出去

   ds.send(dp);
   4.关闭socket服务

   ds.close();

UDP接收端

  1.建立UDP socket服务

  DatagramSocket ds = new DatagramSocket(端口);  //注意:在建立UDP接收端的时候一定要绑定发送端端口
  2.创建用于存储接收到的数据的数据包

  byte[] buf = new byte[1024];
  DatagramPacket dp = new DatagramPacket(buf, buf.length);

  3.使用socket服务的receive方法接收数据包

  ds.receive(dp);
  4.解析数据包中的数据

  String ip = dp.getInetAddress().getHostAddress();

  int port = dp.getPort();

  String text = new String(dp.getData(),0,dp.getLength());
  5.关闭资源

  ds.close();

 

posted @ 2013-03-28 14:49  站在巨人肩膀上看巨人  阅读(166)  评论(0)    收藏  举报