.NET 4.5通信中的错误检测(CRC?)

.NET 4.5通信中的错误检测(CRC?),.net,communication,crc,.net,Communication,Crc,我有一个非常简单的通信利用UDP协议。我想添加一些错误检查(可能是一个不受以前消息影响的哈希函数)。我知道CRC函数,但是在实现中,我发现CRC计算受到以前消息的影响,这在我的情况下是不合适的,因为UDP通信中的一些数据可能无法到达。有人知道可以下载的CRC可以满足我的需要吗(也许我可以自己写一个CRC校验,但不幸的是我的时间有点短)?还有其他已知的选项吗(一个已经在.NETFramework4.5中的类/函数就更好了) 感谢您的努力。一般来说,我建议您使用TCP。在这里,您不需要关心包的顺序是

我有一个非常简单的通信利用UDP协议。我想添加一些错误检查(可能是一个不受以前消息影响的哈希函数)。我知道CRC函数,但是在实现中,我发现CRC计算受到以前消息的影响,这在我的情况下是不合适的,因为UDP通信中的一些数据可能无法到达。有人知道可以下载的CRC可以满足我的需要吗(也许我可以自己写一个CRC校验,但不幸的是我的时间有点短)?还有其他已知的选项吗(一个已经在.NETFramework4.5中的类/函数就更好了)


感谢您的努力。

一般来说,我建议您使用TCP。在这里,您不需要关心包的顺序是否正确,也不需要考虑校验和(因为它们是正确的)。TCP具有所有内置功能,如果包丢失,TCP也会触发重新传输或丢失包

然而,即使UDP有内置校验和,您通常也不需要实现这样的CRC校验。另请参见维基百科中的


如果您真的想在damieng.com上添加crc,它看起来不错,但我没有检查它。

为什么crc不好?您可以在每个UDP包中分别应用它。您的意思是在每条消息之后将CRC的实际多项式重置为其默认值(这就是我在找到的实现中所做的)?这不是有点粗糙吗?既然时间对我不利,我想我可以同意。我需要一些更安全的校验和计算-这些自动校验和只使用所有位的加法或类似的方法,不是吗?哦,使用UDP对我来说是非常有益的,因为它的速度。。。我将检查您链接的实现。您认为TCP握手对您来说是一个真正的问题的用例是什么?自动检查在每个包中都有一个底层,所以我们永远不会看到corupt包。另请参阅关于UDP校验和。TCP不是一个真正的问题,我只是想让实时数据传输的通信速度快一点,因为我不需要在大多数数据包中使用确认消息,也不需要接受每个数据包。但我只需要非常确定不会有损坏的数据,我知道在UDP(/TCP)数据包中,默认校验和可能永远不会出现错误。哦,ye和我查看了链接。因此,由于自动UDP校验和不仅仅是基于和的,我也许可以使用它。。。谢谢