udp程序包丢失跟踪

balp4ylt  于 2021-07-07  发布在  Java
关注(0)|答案(1)|浏览(519)

这个问题在这里已经有答案了

如何检测udp数据包丢失((5个答案)
上个月关门了。
为了获得可靠的连接,您必须使用tcp。
但是,我想知道是否有一种方法可以修改我的代码,这样我就可以在udp中检查丢失的数据包

  1. try {
  2. DatagramSocket socket = new DatagramSocket(5000);
  3. while(true) {
  4. byte[] buffer = new byte[50];
  5. DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
  6. socket.receive(packet);
  7. System.out.println("Text received is: " + new String(buffer, 0, packet.getLength()));
  8. String returnString = "echo: " + new String(buffer, 0, packet.getLength());
  9. byte[] buffer2 = returnString.getBytes();
  10. InetAddress address = packet.getAddress();
  11. int port = packet.getPort();
  12. packet = new DatagramPacket(buffer2, buffer2.length, address, port);
  13. socket.send(packet);
  14. }
  15. } catch(SocketException e) {
  16. System.out.println("SocketException: " + e.getMessage());
  17. } catch(IOException e) {
  18. System.out.println("IOException: " + e.getMessage());
  19. }
  20. }
kcugc4gi

kcugc4gi1#

因为传输协议不提供设施,所以应用协议需要这样做。
例如,您可以让发送方在每条消息中添加一个序列号,然后接收方就会知道数据报已经丢失或(也可能)重复。
这可以让你发现损失,但却不能让你从中恢复过来。
当然,您需要在接收器中跟踪每个发送者的预期序列号。

相关问题