如何增加特定套接字的TCP接收窗口? - 我知道如何通过设置注册表项TcpWindowSize来为所有套接字执行此操作, 但是如何为特定的人做到这一点?
根据MSFT's documents,方法是
调用Windows套接字功能 setsockopt,用于设置接收 每个插座的窗口。
但是在setsockopt中,提到了SO_RCVBUF:
指定每个套接字缓冲区的总数 为接收预留的空间。这是 与SO_MAX_MSG_SIZE无关并且确实如此 不一定对应于大小 TCP接收窗口。
有可能吗?怎么样?
感谢。
答案 0 :(得分:5)
SO_MAX_MSG_SIZE
用于UDP。这是来自MSDN:
SO_MAX_MSG_SIZE - 返回协议支持的面向消息的套接字的最大出站消息大小。对于面向流的套接字没有意义。
它也无法设置。
对于TCP,只需使用SO_(SND|RCV)BUF
。
答案 1 :(得分:1)
我很确定SO_RCVBUF就是你想要的。第一个链接表示SO_RCVBUF具有最高优先级,用于确定超出系统上设置的TCP窗口大小。从我阅读它的方式来看,我认为所有第二部分都是说SO_RCVBUF大小不必与系统接收窗口大小相匹配。换句话说,它可以是您设置的不同大小。
答案 2 :(得分:0)
您需要小心调整此项并测试结果。 Windows Vista及更高版本具有智能自适应窗口大小自动调整功能,可专门调整窗口大小,以便在LAN和长胖网络(如3G和高损耗网络)上都能正常工作。自己设置窗口大小将覆盖此窗口,以便窗口无法再自动调整窗口大小。如果您需要在特定的高延迟网络(如蜂窝网络)上运行,这可能会损害您的性能。