2010-05-05 54 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和高損耗網絡)上都能正常工作。自己設置窗口大小將覆蓋此值,以便窗口不能再自動調整窗口大小。如果您需要運行特別高等待時間的網絡,例如蜂窩網絡,這可能會損害您的性能。