4

TCP/IPを介して任意の長さのファイルをチャンクで転送するとします。

looping...
    read(buffer, LENGTH)
    send(mysocket, buffer, LENGTH, flags)

私の質問は、LENGTHの最適値は何でしょうか?それともまったく問題ではありませんか?256バイトから8192バイトまですべてが使用されているのを見てきました。

4

3 に答える 3

3

最適とはどういう意味かによって異なります。帯域幅を最適に使用するには、パケットサイズを最大化する必要があるため、少なくともネットワークパケットサイズ(イーサネットでは通常約1500バイト)を送信します。ディスクから読み取る場合は、4096バイトまたは8192バイトが適切な値になります。

于 2011-02-09T22:50:14.387 に答える
0

バッファサイズがパケットサイズに変換される場合は、バッファが短い方が適切です。パケットエラーが発生した場合の再送信は少なくなります。

ATMは、54バイトのパケットでこれを極限まで高めました。

ただし、ライブラリによっては、独自のバッファリングを実行し、パケットサイズを独立して設定している場合があります。YMMV。

于 2011-02-09T22:39:08.243 に答える
0

高遅延接続を介して大量のデータを送信する場合は、送信バッファーを大きくするとスループットが向上します。ここに良い説明があります: http ://www.onlamp.com/pub/a/onlamp/2005/11/17/tcp_tuning.html

于 2017-04-04T13:56:30.063 に答える