StreamSocketListenerControl.NoDelay 屬性

定義

值,指出當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

屬性值

Boolean

bool

值,指出 Nagle 演算法是否用於 建立之 StreamSocket 物件的 TCP 連線。

備註

NoDelay 屬性可控制在建立 的 StreamSocket 物件上啟用或停用 Nagle 的演算法。 StreamSocketNoDelay屬性的預設值為true

Nagle 的演算法是一種技術,可藉由減少透過網路傳送所需的封包數目,來改善 TCP/IP 網路的效率。 演算法會嘗試處理應用程式在小型區塊中重複發出資料所造成的問題。 TCP 封包具有 40 位元組的標頭 (IP 為 20 個位元組,TCP) 則為 20 個位元組。 因此,如果應用程式在封包中只傳送 4 個位元組,封包資料的額外負荷會非常大。 這可能發生在 telnet 或安全殼層 (遠端存取通訊協定,例如,) ,其中大部分按鍵按下可能會只產生一個位元組或兩個立即傳輸的資料。 透過緩慢的連結,其中許多封包可能同時透過網路傳輸。 Nagle 的演算法的運作方式是結合一些小型傳出訊息,並一次全部傳送。 當傳送者沒有收到通知的已傳送封包時,傳送者會持續緩衝輸出,直到其具有完整封包的輸出為止。 這可讓輸出一次全部傳送。 套用 Nagle 演算法的影響是增加頻寬,以犧牲延遲。 緩衝區在內部傳送的妥善撰寫應用程式,不應該需要使用 Nagle 的演算法。

當此屬性 為 true時, StreamSocket 會在 TCP 連線上停用 Nagle 的演算法。 此設定可減少傳送小型訊息時的潛在延遲。 建立 StreamSocket 時,此屬性的預設值為 true

當此屬性為 false時, StreamSocket 會在 TCP 連線上啟用 Nagle 的演算法。 此設定可能會增加頻寬,但代價是延遲,但應該只小心使用。 啟用 Nagle 的演算法,而且也會使用某些其他 TCP 優化時,可能會有一些不良的副作用。

這個屬性可以在 StreamSocketListener 開始接聽連入連線之前設定。 在 StreamSocketListener開始接聽連入連線之後,設定 屬性將會導致錯誤。

此屬性會在StreamSocket所使用的 TCP 通訊端上設定TCP_NODELAY通訊端選項的值。

適用於

另請參閱