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

一个 值,该值指示是否对创建的 StreamSocket 对象的 TCP 连接使用 Nagle 算法。

注解

NoDelay 属性控制是在创建的 StreamSocket 对象上启用或禁用 Nagle 算法。 StreamSocket 上的 NoDelay 属性的默认值为 true

Nagle 算法是一种通过减少需要通过网络发送的数据包数来提高 TCP/IP 网络效率的技术。 该算法尝试处理应用程序在小区块中重复发出数据而导致的问题。 TCP 数据包具有 40 字节的标头 (20 字节的 IP 和 20 字节的 TCP) 。 因此,如果应用在数据包中只发送 4 个字节,则数据包数据的开销会非常大。 (telnet 或安全外壳的远程访问协议可能会发生这种情况,例如,) ,其中大多数按键可能只生成一个字节或两个立即传输的数据。 通过慢速链路,其中许多数据包可能同时通过网络传输。 Nagle 的算法的工作原理是组合一些小型传出消息,并同时发送所有消息。 如果发送的数据包未收到任何确认,则发送方会一直缓冲输出,直到具有完整数据包的输出。 这允许一次性发送所有输出。 应用 Nagle 算法的影响是增加带宽,但代价是延迟。 缓冲区内部发送的编写良好的应用不应使用 Nagle 算法。

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

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

可以在 StreamSocketListener 开始侦听传入连接之前设置此属性。 StreamSocketListener 开始侦听传入连接后,设置 属性将导致错误。

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

适用于

另请参阅