【问题标题】:C# UDP socket check packet lossC# UDP 套接字检查数据包丢失
【发布时间】:2014-11-11 04:43:39
【问题描述】:

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

发送字符串的来源:

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

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

所以为了统计,我每 5 秒发送一次 Receiver 已经知道的数据

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

【问题讨论】:

    标签: c# string udp packet-loss


    【解决方案1】:

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

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


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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-23
      • 2023-03-30
      • 1970-01-01
      • 2019-06-05
      • 2019-05-25
      • 1970-01-01
      • 2019-08-16
      • 1970-01-01
      相关资源
      最近更新 更多