1

我正在实现一个 UDP 数据传输的东西。我有几个关于 UDP 缓冲区的问题。

我正在使用 UDPClient 进行 UDP 发送/接收。我的宽带带宽是 150KB/s(bytes/s,不是bps)。

  1. 我向 27 台主机发送了一个 500B 的数据报

  2. 27 台主机收到后会发回 10KB 数据报。

  3. 所以,我应该收到 27 条回复,对吧?但是,我平均只得到 8 - 12 个。

  4. 然后我尝试将响应的大小减小到 500B,是的,我收到了所有。

我的一个想法是,如果所有 27 台主机几乎同时发回 10KB 响应,则传入流量将是 270KB/s(可能),这超出了我的传入带宽,因此会发生丢失。我对吗?

但我认为即使传入流量超过带宽,Windows 是否应该将数据报放入缓冲区并等待接收?

然后我怀疑我的 UdpClient 的 ReceiveBufferSize 可能太小了?默认是8092B??

我不知道我在这些方面是否还好。请给我一些帮助。

4

1 回答 1

0

UDP 协议不保证投递,如果需要保证报文投递,请切换到 TCP。

UDP 更适合那些丢失数据包比等待数据包找到它的方式更好的应用程序。即流媒体或类似的东西。

有关更多信息,请参见维基百科

于 2010-06-10T19:17:29.460 回答