-1

独自の単純な raw TCP プロトコルを使用して、イーサネット経由で数キロバイトのデータを送信しようとしています。

標準の Windows 構成では、TcpAckFrequency = 1 でレジストリを変更しない限り、確認応答パケットを返す前に 2 つのパケットを受信する必要があります。この場合、1 つの受信パケットで確認応答を返すのに十分です。そうでない場合は、TcpDelAckTicks の後に ACK を取得します* デフォルトでは 100 = 200 ミリ秒 (これは別のレジストリ キーです)。これは、データを 1460 バイト未満のチャンクで送信すると問題になります。各チャンクは 200 ミリ秒後に確認応答を取得し、送信者はそれを待ってから次のパケットを送信するためです。1 つの解決策は、データを 1460 バイトより大きい単位で送信することです。これにより、実際には 2 つのパケットが送信され、ACK が受信されます。

しかし、より小さなパケットを送信したい場合はどうすればよいでしょうか? 次のパケットを送信する前に確認応答パケットを待機しないように、setsockopt を使用してソケットを構成する方法はありますか?

事前にどうもありがとうございました。

4

1 に答える 1

0

送信側で Nagle アルゴリズムをオフにします。C では、これは TCP_NODELAY オプションです。

于 2013-05-26T02:04:33.930 に答える