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 字节标头 (20 字节的 IP 和 20 字节的 TCP) 。 因此,如果应用在一个数据包中只发送 4 个字节,则数据包数据的开销非常大。 (telnet 或安全外壳的远程访问协议可能会发生这种情况,例如,) 大多数按键可能只生成一个字节或两个立即传输的数据。 通过慢速链路,其中许多数据包可能同时通过网络传输。 Nagle 的算法的工作原理是组合一些小型传出消息,并同时发送所有这些消息。 当发送方未收到任何确认的已发送数据包时,发送方会一直缓冲输出,直到其具有完整数据包的输出值。 这允许一次性发送所有输出。 应用 Nagle 算法的影响是增加带宽,但代价是延迟。 缓冲区内部发送的编写良好的应用不应使用 Nagle 的算法。

当此属性为 true 时, StreamSocket 将在 TCP 连接上禁用 Nagle 的算法。 此设置可减少发送小消息时的潜在延迟。 创建 StreamSocket 时,此属性的默认值为 true

当此属性为 false 时, StreamSocket 将在 TCP 连接上启用 Nagle 的算法。 此设置可能会以牺牲延迟为代价增加带宽,但只应谨慎使用。 启用 Nagle 算法并使用某些其他 TCP 优化时,可能会产生一些不利的副作用。

可以在连接 StreamSocket 之前设置此属性。 连接 StreamSocket 后,设置 属性将导致错误。

此属性设置 StreamSocket 使用的 TCP 套接字上的 TCP_NODELAY 套接字选项的值。

适用于

另请参阅