【问题标题】:TCP client-server, ping and packet sizeTCP 客户端-服务器、ping 和数据包大小
【发布时间】:2014-11-12 00:47:22
【问题描述】:

使用用 Win32 套接字编写的简单特定 TCP 客户端-服务器。请求和应答块的大小很小。我担心 TCP ping(数据包到达时间)可能导致的性能问题。由于路由上服务器的延迟,发送 500 个 8 字节的数据包会比发送 1 个 4000 字节的数据包慢。据我了解,send() 和 recv() 中的数量不会影响数据包大小。是否可以控制以任何方式处理?

【问题讨论】:

  • 如果你想要更多的控制,放弃 TCP
  • 您能否更具体地说明您正在寻找哪种控制方式?
  • 的标识。发送 CRC/MD5 - 获取它的状态。可能是 0.01 秒内的 100 个项目,并希望尽快得到答复。发送一个请求并等待响应,因为它最方便,但速度可能不令人满意。
  • 流水线肯定会让事情进展得更快,所以如果您使用的协议允许,请尽快发送所有 100 个项目,并在收到结果时回读。

标签: c sockets tcp


【解决方案1】:

Microsoft 有一篇知识库文章如何调整通过 TCP/IP 发送小段的性能。查看文章以根据您的需要微调 TCP/IP: http://support.microsoft.com/kb/214397

【讨论】:

    【解决方案2】:

    我担心 TCP ping(数据包到达时间)可能导致的性能问题。

    没有“TCP ping”之类的东西,如果有的话,它与“数据包到达时间”没有任何关系。

    发送 500 个 8 字节的数据包会比发送 1 个 4000 字节的数据包慢,因为路由上的服务器存在延迟。

    可能不会。 Nagle 算法更有可能部分或完全合并数据。

    据我所知,send() 和 recv() 中的数量不会影响数据包大小。

    正确,见上文。

    是否可以通过任何方式控制流程?

    您可以关闭 Nagle 算法,但您尚未确定这样做的任何理由。

    【讨论】:

      猜你喜欢
      • 2016-03-02
      • 2011-02-05
      • 1970-01-01
      • 1970-01-01
      • 2018-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多