UDP程序数据包丢失跟踪



要获得可靠的连接,必须使用TCP。

然而,我想知道是否有一种方法可以修改我的代码,这样我就可以在UDP 中检查丢失的数据包

try {
DatagramSocket socket = new DatagramSocket(5000);
while(true) {
byte[] buffer = new byte[50];
DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
socket.receive(packet);
System.out.println("Text received is: " + new String(buffer, 0, packet.getLength()));
String returnString = "echo: " + new String(buffer, 0, packet.getLength());
byte[] buffer2 = returnString.getBytes();
InetAddress address = packet.getAddress();
int port = packet.getPort();
packet = new DatagramPacket(buffer2, buffer2.length, address, port);
socket.send(packet);
}
} catch(SocketException e) {
System.out.println("SocketException: " + e.getMessage());
} catch(IOException e) {
System.out.println("IOException: " + e.getMessage());
}
}

由于传输协议不提供设施,应用程序协议需要这样做。

例如,您可以让发送方在每条消息中添加一个序列号,然后接收方就会知道数据报丢失了,或者(也可能(重复了。

这可以让你检测损失,但不会让你从中恢复

当然,你需要在接收器中跟踪每个发送者的预期序列号。

最新更新