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