StreamSocketListenerControl.NoDelay プロパティ
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
StreamSocketListener オブジェクトが接続を受信したときに作成された StreamSocket オブジェクトで Nagle アルゴリズムを使用するかどうかを示す 値です。
public:
property bool NoDelay { bool get(); void set(bool value); };
bool NoDelay();
void NoDelay(bool value);
public bool NoDelay { get; set; }
var boolean = streamSocketListenerControl.noDelay;
streamSocketListenerControl.noDelay = boolean;
Public Property NoDelay As Boolean
プロパティ値
bool
作成された StreamSocket オブジェクトの TCP 接続で Nagle アルゴリズムを使用するかどうかを示す 値です。
注釈
NoDelay プロパティは、作成された StreamSocket オブジェクトで Nagle のアルゴリズムを有効または無効にするかどうかを制御します。 StreamSocket の NoDelay プロパティの既定値は true です。
Nagle のアルゴリズムは、ネットワーク経由で送信する必要があるパケットの数を減らすことで、TCP/IP ネットワークの効率を向上させる手法です。 このアルゴリズムは、小さなチャンクでデータを繰り返し出力するアプリケーションによって発生する問題に対処しようとします。 TCP パケットには 40 バイトのヘッダーがあります (IP の場合は 20 バイト、TCP の場合は 20 バイト)。 そのため、アプリがパケットに 4 バイトしか送信しないと、パケット データのオーバーヘッドは非常に大きくなります。 これは、ほとんどのキーを押すとすぐに送信される 1 バイトまたは 2 つのデータしか生成できないリモート アクセス プロトコル (telnet やセキュリティで保護されたシェルなど) で発生する可能性があります。 低速リンクを介して、これらのパケットの多くは同時にネットワーク経由で転送される可能性があります。 Nagle のアルゴリズムは、多数の小さな送信メッセージを組み合わせて、すべてを一度に送信することで機能します。 送信側が受信確認を受け取っていない送信パケットがある場合、送信側は完全なパケットの出力の価値があるまで出力をバッファリングし続けます。 これにより、出力をすべて一度に送信できます。 Nagle のアルゴリズムを適用した場合の影響は、待機時間を犠牲にして帯域幅を増やすことです。 バッファーが内部的に送信する適切に記述されたアプリでは、Nagle のアルゴリズムを使用する必要はありません。
このプロパティが true の場合、 StreamSocket は TCP 接続で Nagle のアルゴリズムを無効にします。 この設定により、小さなメッセージを送信するときの遅延の可能性が軽減されます。 StreamSocket が作成されると、このプロパティの既定値は true になります。
このプロパティが false の場合、 StreamSocket は TCP 接続で Nagle のアルゴリズムを有効にします。 この設定では、待機時間を犠牲にして帯域幅を増やすことができますが、使用する必要があるのは注意が必要です。 Nagle のアルゴリズムが有効になっており、他の TCP 最適化も使用されている場合は、いくつかの副作用が発生する可能性があります。
このプロパティは、 StreamSocketListener が受信接続のリッスンを開始する前に設定できます。 StreamSocketListener が受信接続のリッスンを開始すると、 プロパティを設定するとエラーが発生します。
このプロパティは、StreamSocket で使用される TCP ソケットの TCP_NODELAY ソケット オプションの値を設定します。