StreamSocketControl.NoDelay プロパティ

定義

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 = streamSocketControl.noDelay;
streamSocketControl.noDelay = boolean;
Public Property NoDelay As Boolean

プロパティ値

Boolean

bool

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

Windows の要件

アプリの機能
ID_CAP_NETWORKING [Windows Phone]

注釈

NoDelay プロパティは、 StreamSocket オブジェクトで Nagle のアルゴリズムを有効または無効にするかどうかを制御します。 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 最適化も使用されている場合は、いくつかの副作用が発生する可能性があります。

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

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

適用対象

こちらもご覧ください