8

特定のソケットのTCP受信ウィンドウを増やす方法は?-レジストリキーTcpWindowSizeを設定することにより、すべてのソケットに対してこれを行う方法を知っていますが、特定のソケットに対してどのように行うのですか?

MSFTの文書によると、その方法は

ソケットごとに受信ウィンドウを設定するWindowsSockets関数setsockoptを呼び出します。

しかし、setsockoptでは、SO_RCVBUFについて言及されています。

受信用に予約されているソケットごとのバッファスペースの合計を指定します。これはSO_MAX_MSG_SIZEとは関係がなく、TCP受信ウィンドウのサイズに必ずしも対応しているわけではありません。

それでそれは可能ですか?どのように?

ありがとう。

4

3 に答える 3

5

SO_MAX_MSG_SIZEUDP用です。これはMSDNからのものです:

SO_MAX_MSG_SIZE - プロトコルでサポートされているメッセージ指向ソケットの最大送信メッセージ サイズを返します。ストリーム指向のソケットには意味がありません。

また、設定できません

TCP の場合はSO_(SND|RCV)BUF.

于 2010-05-05T16:26:07.697 に答える
1

SO_RCVBUF があなたが望むものであると確信しています。最初のリンクは、SO_RCVBUF が、システムに設定されている何よりも優先して TCP ウィンドウ サイズを決定するための最高の優先順位を持っていることを示しています。私が読んでいる方法から、2番目の部分はすべて、SO_RCVBUFのサイズがシステムの受信ウィンドウのサイズと一致する必要はないということだと思います。つまり、設定した別のサイズにすることができます。

于 2010-05-05T15:05:52.393 に答える
0

これを慎重に調整し、結果をテストする必要があります。Windows Vista 以降には、スマート アダプティブ ウィンドウ サイズ自動調整機能があり、特にウィンドウ サイズを調整して、LAN と 3G や高損失ネットワークなどの長距離ネットワークの両方で適切に機能します。ウィンドウ サイズを自分で設定すると、これがオーバーライドされるため、ウィンドウはウィンドウ サイズを自動的に調整できなくなります。これにより、セルラー ネットワークなどの特に遅延の大きいネットワークで実行する必要がある場合、パフォーマンスが低下する可能性があります。

于 2010-05-06T19:34:10.053 に答える