码迷,mamicode.com
首页 > 其他好文 > 详细

基于 UDP 协议的网络编程

时间:2017-03-26 16:18:42      阅读:207      评论:0      收藏:0      [点我收藏+]

标签:[]   nbsp   数据封装   控制   null   name   enum   ret   举例   

  • DatagramSocket DatagramPacket 实现基于 UDP 协议网络程序

  • UDP 数据报通过数据报套接字 DatagramSocket 发送和接收,系统不保证 UDP 数据报一定能够安全送到目的地,也不能确定什么时候可以抵达

  • DatagramPacket 对象封装了 UDP 数据报(<64k),在数据报中包含了发送端的 IP 地址和端口号以及接收端的 IP 地址和端口号

  • UDP 协议中每个数据报都给出了完整的地址信息,因此无须建立发送方和接收方的连接

举例:
  1. public class TestUDP {
  2. @Test
  3. public void send() {
  4. DatagramSocket ds = null;
  5. try {
  6. // 构造数据报套接字并将其绑定到本地主机上任何可用的端口
  7. ds = new DatagramSocket();
  8. byte[] b = "test message".getBytes();
  9. // 创建数据报包(把要发送的数据封装进去)
  10. DatagramPacket dp = new DatagramPacket(b, 0, b.length, InetAddress.getByName("127.0.0.1"), 6789);
  11. // 发送数据报包(须<64KB,不保证投递成功)
  12. ds.send(dp);
  13. } catch (Exception e) {
  14. e.printStackTrace();
  15. } finally {
  16. ds.close();
  17. }
  18. }
  19. @Test
  20. public void receive() {
  21. DatagramSocket ds = null;
  22. try {
  23. // 构造数据报套接字并将其绑定到本地主机上将要接收发送端数据的端口
  24. ds = new DatagramSocket(6789);
  25. byte[] b = new byte[1024];
  26. // 创建数据报包(指明 b 为接收对象)
  27. DatagramPacket dp = new DatagramPacket(b, 0, b.length);
  28. // 接收数据报包
  29. ds.receive(dp);
  30. // 打印接受到的数据到控制台
  31. String str = new String(dp.getData(), 0, dp.getLength());
  32. System.out.println(str);
  33. } catch (Exception e) {
  34. e.printStackTrace();
  35. } finally {
  36. ds.close();
  37. }
  38. }
  39. }

基于 UDP 协议的网络编程

标签:[]   nbsp   数据封装   控制   null   name   enum   ret   举例   

原文地址:http://www.cnblogs.com/chendifan/p/6623002.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!