【发布时间】:2015-05-17 08:04:20
【问题描述】:
似乎我无法接收消息大于 4096 字节的 UDP 数据包。 我在哪里可以更改此限制?
是操作系统还是网络适配器相关?
我的 Windows Server 2012 R2 在我的 Windows 8.1 电脑上运行良好时遇到了这个问题。
任何提示将不胜感激。
【问题讨论】:
标签: windows udp packet packet-capture packet-loss
似乎我无法接收消息大于 4096 字节的 UDP 数据包。 我在哪里可以更改此限制?
是操作系统还是网络适配器相关?
我的 Windows Server 2012 R2 在我的 Windows 8.1 电脑上运行良好时遇到了这个问题。
任何提示将不胜感激。
【问题讨论】:
标签: windows udp packet packet-capture packet-loss
您需要提高发送方的套接字发送缓冲区大小和接收方的套接字接收缓冲区大小。然而,普遍接受的 UDP 有效载荷大小的实际限制是 534 字节。除此之外,它们可以被分段,如果一个片段没有到达,整个数据报就会丢失。
【讨论】:
根据the Microsoft documentation for socket options,有一个SO_MAX_MSG_SIZE 选项是“协议支持的面向消息的套接字的最大出站消息大小”。 UDP 套接字是“面向消息的套接字”(与“面向流的套接字”相反;TCP 套接字是面向流的)。
这表明操作系统规定了最大消息大小。遗憾的是,该页面没有在 SO_MAX_MSG_SIZE 行的“设置”列中说“是”,因此您的程序无法覆盖该最大值。
【讨论】: