繁体   English   中英

C#UDP套接字检查数据包丢失

[英]C# UDP socket check packet loss

我有udp套接字,它每1秒发送一次100字符串,并且在收到数据时我要检查数据是否正确并测量数据包丢失

源发送字符串:

string toSend;
byte[] data = Encoding.ASCII.GetBytes(toSend);

据我所知udp无法检查数据是否正确并且无法测量数据包丢失,除非Received已经知道数据将接收

因此对于统计信息,我每5秒发送一次Receiver已经知道的数据

我如何知道数据接收时发送的数据正确或丢包?

在UDP的顶部添加您自己的协议,该协议包括某种序列号。 如果从零开始序列号,然后发送六个数据包,则最后一个数据包应具有序列号5;如果您接收到具有序列号0、1、5的数据包,则您知道这六个数据包有50%的数据包丢失。

为了进行错误检查,请为每个数据包添加一个简单的校验和。


同样,如果您想获得更高的可靠性,那么使用序列编号方案可以轻松地实现数据包的重新排序,以便将错误顺序到达的数据包重新排列为正确的顺序。 实现确认和重发丢失的数据包也很容易。 因此,将其添加到UDP之上是一种实现非常简单的类似TCP协议的方法。 许多使用UDP的协议都实现了其中的某些或全部功能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM