Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-UDP上可靠数据传输协议的校验和_Java_Sockets_Networking_Udp_Checksum - Fatal编程技术网

Java-UDP上可靠数据传输协议的校验和

Java-UDP上可靠数据传输协议的校验和,java,sockets,networking,udp,checksum,Java,Sockets,Networking,Udp,Checksum,我正在通过UDP实现一个可靠的数据传输协议。数据包可能会损坏,因此我必须使用校验和来确定哪个数据包损坏了。由于我的RDT协议是一个停止等待协议,所以我发送一个数据包并等待响应 我正在使用CRC32计算校验和 Checksum checksum = new CRC32(); checksum.update(packet.getData(),0,packet.getLength()); long value = checksum.getValue(); 问题是,如何使用发送方端的校验和

我正在通过UDP实现一个可靠的数据传输协议。数据包可能会损坏,因此我必须使用校验和来确定哪个数据包损坏了。由于我的RDT协议是一个停止等待协议,所以我发送一个数据包并等待响应

我正在使用CRC32计算校验和

Checksum checksum = new CRC32();  

checksum.update(packet.getData(),0,packet.getLength());  

long value = checksum.getValue();
问题是,如何使用发送方端的校验和值与接收方端的数据包校验和值进行比较?我是否将发送方的校验和附加到数据包中,并让接收方通过在校验和值开始之前读取接收到的数据包来更新自己的校验和

例如,在接收器侧:

receiverChecksum.update(packet.getData(),0,packet.getLength - checksumLength());  

我的方法正确吗?谢谢。

实际上,使用UDP的风险在于数据包根本无法到达。如今,数据损坏相对较少,因为UDP本身已经包含校验和。您不必担心数据损坏。把重点放在丢包上。我明白了,我一定会处理丢包问题。和现在一样,我关心的是管理损坏的数据包。如何使用UDP数据包中已经包含的校验和进行比较?您不必这样做。事实上,我使用的是教授提供的模拟UDP协议,而不是我们在互联网上使用的实际UDP协议。因此,损坏的数据包将到达接收器。