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

本文关键字:数据包 检查 套接字 C#UDP | 更新日期: 2023-09-27 18:22:05

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

发送字符串的来源:

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

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

因此,对于统计数据,我每5秒发送一次接收方已经知道的数据

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

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

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

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


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