C#UDP套接字检查丢包

时间:2014-09-17 08:21:05

标签: c# string udp packet-loss

我有udp套接字,每1秒发送100个字符串 当收到数据时,我想检查数据是否正确并测量数据包丢失

发送字符串的来源:

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

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

所以对于统计我发送的数据是Receiver已经知道的每5秒

当数据接收时,我怎么知道发送的数据是正确的还是丢包?

1 个答案:

答案 0 :(得分:1)

添加自己的UDP协议,这是一种包含某种序列号的协议。如果您从零开始序列号,并发送六个数据包,那么最后一个数据包应该具有序号5。如果您收到序列号为0,1和5的数据包,那么您知道这六个数据包的丢包率为50%

对于错误检查,为每个数据包添加一个简单的校验和。


此外,如果您想要更好的可靠性,那么使用序列编号方案可以轻松实现数据包重新排序,因此以错误顺序到达的数据包将重新排列为正确的顺序。实现确认和重传丢失的数据包也很容易。因此,在UDP之上添加它是一种实现非常简单的类TCP协议的方法。许多使用UDP的协议实现了部分或全部这些功能。