StreamWebSocketControl.NoDelay プロパティ

定義

Nagle アルゴリズムが StreamWebSocket オブジェクトで使用されるかどうかを示す値。

public:
 property bool NoDelay { bool get(); void set(bool value); };
bool NoDelay();

void NoDelay(bool value);
public bool NoDelay { get; set; }
var boolean = streamWebSocketControl.noDelay;
streamWebSocketControl.noDelay = boolean;
Public Property NoDelay As Boolean

プロパティ値

Boolean

bool

StreamWebSocket オブジェクトの TCP 接続で Nagle アルゴリズムが使用されるかどうかを示す値。

注釈

NoDelay プロパティは、 StreamWebSocket オブジェクトで Nagle のアルゴリズムを有効または無効にするかどうかを制御します。 NoDelay プロパティの既定値は true です

Nagle のアルゴリズムは、ネットワーク経由で送信する必要があるパケットの数を減らすことで、TCP/IP ネットワークの効率を向上させる手法です。 アルゴリズムは、小さなチャンクでデータを繰り返し出力するアプリケーションによって発生する問題に対処しようとします。 TCP パケットには 40 バイトのヘッダーがあります (IP の場合は 20 バイト、TCP の場合は 20 バイト)。 そのため、アプリがパケットで送信するバイト数が 4 バイトの場合、パケット データのオーバーヘッドは非常に大きくなります。 これは、ほとんどのキー押下ですぐに送信される 1 バイトまたは 2 つのデータしか生成できないリモート アクセス プロトコル (telnet やセキュリティで保護されたシェルなど) で発生する可能性があります。 低速リンクを介して、これらのパケットの多くが同時にネットワーク経由で転送される可能性があります。 Nagle のアルゴリズムは、多数の小さな送信メッセージを組み合わせて、それらをすべて一度に送信することで機能します。 送信者が受信確認を受け取っていない送信パケットがある場合、送信者は完全なパケットの出力価値が得られるまで、出力をバッファリングし続けます。 これにより、出力を一度にすべて送信できます。 Nagle のアルゴリズムを適用する影響は、待機時間を犠牲にして帯域幅を増やすことです。 バッファーが内部的に送信する適切に記述されたアプリでは、Nagle のアルゴリズムを使用する必要はありません。

このプロパティが true の場合、 StreamWebSocket は TCP 接続で Nagle のアルゴリズムを無効にします。 この設定により、小さなメッセージを送信するときの潜在的な遅延が軽減されます。 StreamWebSocket を作成すると、このプロパティの既定値は true になります

このプロパティが false の場合、 StreamWebSocket は TCP 接続で Nagle のアルゴリズムを有効にします。 この設定では、待機時間を犠牲にして帯域幅を増やすことができますが、注意して使用する必要があります。 Nagle のアルゴリズムが有効になっており、他の特定の TCP 最適化も使用されている場合、いくつかの副作用が発生する可能性があります。

このプロパティは、 StreamWebSocket が接続される前に設定できます。 StreamWebSocket が接続されると、 プロパティを設定するとエラーが発生します。

このプロパティは、StreamWebSocket で使用される TCP ソケットの TCP_NODELAY ソケット オプションの値を設定します。

適用対象

こちらもご覧ください