3

クレイジーに聞こえるかもしれませんが、MSS などの TCP スタック パラメータを手動で構成する必要がある場合があります。

たとえば、ここで説明されているように、マシン全体で実行できることがわかります。しかし、tcp ソケットごとに設定する方法が必要です。

4

3 に答える 3

2

それは標準setsockoptである必要がありますTCP_MAXSEG。これは、接続が開始される前 (つまり、connectまたはの前listen) に実行する必要があることと、TCP スタックがパス MTU に従って実際の値を変更する可能性があることを覚えておいてください。

于 2010-11-09T20:19:32.873 に答える
0

このMSDN記事setsockopt()の下部にあるように、TCP_MAXSEGを使用して呼び出すことができます。しかし、奇妙なことに、TCP_MAXSEGはに提供する有効なoptnameではありません。それで、多分それは設定することができますが、取得することはできませんか?私はそれを試してみて、それが機能するかどうかを確認すると思います。getsockopt()

于 2010-11-09T15:01:31.817 に答える
0

Windows では、ソケットごとに MSS を調整できない可能性があると思います。

テスト サンプルは次のとおり
です。setsockoptTCP_MAXSEG
#include <ws2tcpip.h>

`int mss = 512;`  
`setsockopt(sock, IPPROTO_TCP, TCP_MAXSEG, (char*)&mss, sizeof(mss);`  

connectまたはの前に設定しlistenます。

Windows10のvs2015でテストしました。このコードは VS2015 でコンパイルに合格できますが、実行できません。WindowsWSAENOPROTOOPTの実行中にエラーが発生します。

于 2016-11-28T06:39:22.503 に答える