StreamSocketControl.NoDelay 屬性
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
值,指出 Nagle 演算法是否用於 StreamSocket 物件。
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
屬性值
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 個位元組,封包資料的額外負荷會非常大。 這可能發生在 telnet 或安全殼層 (遠端存取通訊協定,例如,) ,其中大部分按鍵按下可能會只產生一個位元組或兩個立即傳輸的資料。 透過緩慢的連結,其中許多封包可能同時透過網路傳輸。 Nagle 的演算法的運作方式是結合一些小型傳出訊息,並一次全部傳送。 當傳送者沒有收到通知的已傳送封包時,傳送者會持續緩衝輸出,直到其具有完整封包的輸出為止。 這可讓輸出一次全部傳送。 套用 Nagle 演算法的影響是增加頻寬,以犧牲延遲。 緩衝區在內部傳送的妥善撰寫應用程式,不應該需要使用 Nagle 的演算法。
當此屬性 為 true時, StreamSocket 會在 TCP 連線上停用 Nagle 的演算法。 此設定可減少傳送小型訊息時的潛在延遲。 建立 StreamSocket 時,此屬性的預設值為 true。
當此屬性為 false時, StreamSocket 會在 TCP 連線上啟用 Nagle 的演算法。 此設定可能會增加頻寬,但代價是延遲,但應該只小心使用。 啟用 Nagle 的演算法,而且也會使用某些其他 TCP 優化時,可能會有一些不良的副作用。
在 StreamSocket 連接之前,可以設定這個屬性。 連線 StreamSocket 之後,設定 屬性將會導致錯誤。
此屬性會在StreamSocket所使用的 TCP 通訊端上設定TCP_NODELAY通訊端選項的值。