似乎我无法接收消息大于4096字节的UDP数据包。 我在哪里可以更改此限制?
操作系统或网络适配器是否相关?
我在Windows Server 2012 R2上遇到此问题,而它在Windows 8.1上运行正常。
任何提示都会非常感激。
答案 0 :(得分:0)
您需要在发送方处提高套接字发送缓冲区大小,并在接收方处提供套接字接收缓冲区大小。但是,UDP有效载荷大小的普遍接受的实际限制是534字节。在上面,它们可以被分段,如果片段没有到达,整个数据报就会丢失。
答案 1 :(得分:0)
根据the Microsoft documentation for socket options,SO_MAX_MSG_SIZE
选项是"协议支持的面向消息的套接字的最大出站邮件大小。" UDP套接字是面向消息的套接字" (而不是"面向流的套接字&#34 ;; TCP套接字是面向流的)。
这表明操作系统强加了最大邮件大小。可悲的是,该页面不说"是"在" Set" SO_MAX_MSG_SIZE
行的列,因此您的程序无法覆盖该最大值。