2010-05-05 47 views
8

如何增加特定套接字的TCP接收窗口? - 我知道如何通过设置注册表项TcpWindowSize, 来为所有套接字这样做,但对于特定的那个如何做?增加特定套接字的TCP接收窗口

MSFT's documents,该方法是

调用Windows套接字函数 setsockopt的,它设置在每个插槽的基础上得到 窗口。

但在setsockopt,提到关于SO_RCVBUF:

指定接收保留的总每个套接字缓冲 空间。这是与SO_MAX_MSG_SIZE无关的 ,并且 不一定对应于TCP接收窗口的大小 。

那么有可能吗?怎么样?

谢谢。

回答

5

SO_MAX_MSG_SIZE用于UDP。这是从MSDN

SO_MAX_MSG_SIZE - 返回协议支持的面向消息的套接字的最大出站消息大小。对于面向流的套接字没有意义。

这也是不可设置

对于TCP只是使用SO_(SND|RCV)BUF

1

我相当确信SO_RCVBUF是你想要的。第一个链接指出,SO_RCVBUF具有确定系统上设置的TCP窗口大小的最高优先级。从我阅读的方式来看,我认为第二部分的意思是说SO_RCVBUF大小不必与系统接收窗口大小相匹配。换句话说,它可以是您设置的不同大小。

+0

谢谢。 有没有办法设置SO_MAX_MSG_SIZE? – rkellerm 2010-05-05 16:04:53

0

你需要小心调整和测试结果。 Windows Vista及更高版本具有智能自适应窗口大小自动调整功能,可以专门调整窗口大小,以便在局域网和长途网络(如3G和高损耗网络)上都能正常工作。自己设置窗口大小将覆盖此值,以便窗口不能再自动调整窗口大小。如果您需要运行特别高等待时间的网络,例如蜂窝网络,这可能会损害您的性能。