基于 UDP 协议的网络编程

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于 UDP 协议的网络编程相关的知识,希望对你有一定的参考价值。

  • 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 协议的网络编程的主要内容,如果未能解决你的问题,请参考以下文章

《网络编程》第4节:基于UDP协议的网络编程

网络编程的常识 基于tcp协议的编程模型 tcp协议和udp协议的比较 基于udp协议的编程模型

网络 基于UDP协议的socket编程

网络编程之基于UDP协议套接字

基于 UDP 协议的网络编程

基于UDP协议的网络通信应用程序(UDP-Socket)