【问题标题】:How to set ReceiveBufferSize for UDPClient? or Does it make sense to set? C#如何为 UDPClient 设置 ReceiveBufferSize?或者设置是否有意义? C#
【发布时间】:2010-03-08 15:30:13
【问题描述】:

我正在实现一个 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??

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

【问题讨论】:

  • 500GB 数据报?你可能会发送什么,你的硬盘?

标签: c# sockets buffer udpclient


【解决方案1】:

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

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

请参阅wikipedia 了解更多信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多