gpt4 book ai didi

c++ - 下面这个QTcpSocket延迟怎么解释呢?

转载 作者:行者123 更新时间:2023-11-30 01:24:04 26 4
gpt4 key购买 nike

我有两个进程通过 TCP 套接字相互通信。进程 A 向进程 B 发送请求并等待响应。进程 B 处理请求,并发送响应。对于某些请求,不需要将响应发送回进程 A。

假设进程 A 首先发送一个不需要响应的请求 X,然后立即发送一个需要响应的请求 Y,当 A 在其套接字上等待数据时观察到一个明显的小延迟(~0.04秒)。这是控制流程:

A sends X
A sends Y
B handles X
B handles Y and writes response
(small delay in waitForReadyRead() in A of ~0.04s)
A receives response for Y

当我也为 X 引入一个响应,并让 A 等待该响应时,延迟消失了,控制流程如下所示:

A sends X
B handles X and writes response
A receives response for X
A sends Y
B handles Y and writes response
A receives response for Y

这显然是某种同步问题,但我无法解释。谁能解释在 B 不发送对 X 的响应的情况下引起的小延迟?

最佳答案

这是答案:

http://en.wikipedia.org/wiki/Nagle_algorithm

您的数据已排队,未发送出去。您需要设置一个套接字选项 (TCP_NODELAY) 来防止这种情况发生,或者使用其他一些传输协议(protocol),例如 UDP。您可以在“man tcp”中获得更多信息。

关于c++ - 下面这个QTcpSocket延迟怎么解释呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14157143/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com