【发布时间】:2011-12-01 17:55:07
【问题描述】:
我编写了一个自定义 C# 程序,它接收大约 1MByte/sec 的 UDP 多播数据。它在千兆网卡上运行,连接到专用服务器。
在一天中的某些时候,当网络流量很高时,它会丢失 UDP 数据包。
- 如果我有 两个 正在运行的程序副本,它们都会在 8 小时内收到 100% 的 UDP 数据包。
- 如果我有 三个 正在运行的程序副本,它们都会在相同的 8 小时内开始丢失偶尔的 UDP 数据包。
在这两种情况下,CPU 使用率仅为峰值的 15% 左右。
这怎么可能?
【问题讨论】:
-
你知道 UDP 不保证传送的权利吗? ... 丢包是意料之中的——尤其是在负载下
-
@jtm001。是的,我知道这一点。但是,在这种情况下,它无关紧要,因为程序的所有副本都在监视相同的 UDP 流。在这种情况下,数据包丢失发生在 数据包进入 NIC 之后。
标签: c# .net networking