【问题标题】:How to cope with Nagle's algorithm with TcpClient?TcpClient如何应对Nagle的算法?
【发布时间】:2011-09-19 11:45:32
【问题描述】:

我正在阅读this thread 并在解决方案中注意到,如果您发送的数据长度与实际数据分开,Nagle 的算法可能会播放并取消同步发送的数据。

我对此感到疑惑,因为我看到客户端首先发送数据的长度然后发送数据本身作为单独的调用的许多代码示例。这个问题对他们没有影响吗?

我应该将数据的长度和数据本身连接到一个单字节数组中并一次性发送吗?如果是这样,是否有更好的方法来连接两个字节数组,而无需手动将两个(循环)中的所有数据复制到新的数组中?对于必须经常发生的事情(每次用户或服务器在彼此之间发送数据时)似乎效率很低。

【问题讨论】:

    标签: c# tcpclient


    【解决方案1】:

    如果您创建了带有NoDelay 选项集的Socket,那么您将不会受到Nagle 算法的影响;传递给Send 的数据将立即发送。

    鉴于此,在单个 Send 调用中传递单个字节数组会比单独调用更有效;每次调用Send 都会产生数据包头的开销。

    【讨论】:

      猜你喜欢
      • 2012-03-29
      • 1970-01-01
      • 2014-07-11
      • 2013-07-24
      • 1970-01-01
      • 1970-01-01
      • 2016-02-08
      • 1970-01-01
      • 2013-01-02
      相关资源
      最近更新 更多