TCP输出队列阻塞是否保持活动状态?

时间:2018-04-17 08:50:03

标签: c++ linux tcp keep-alive

我有以下情况: 建立TCP连接。客户端(运行linux)已激活keep-alive,并且可以根据需要运行。

现在的问题是:当我在服务器的请求和客户端的应答之间拔掉客户端的以太网电缆时,keep-alive停止工作。

我从netstat看到Send-Q已经填满了。 send-q是否与TCP保持活动有关?有没有办法清除这个队列?

此致 青蛙时间

1 个答案:

答案 0 :(得分:-1)

TCP keep-alive只是一种奇特的说法"发送0字节数据包以保持连接存活,如果没有数据"。由于您仍在发送标头,而另一方仍需要确认,因此在IP级别您仍在进行通信,但不是在套接字级别。

显然,unpluggint会停止IP数据包和保持活动状态。而且,只要有一个发送-Q,就没有必要发送空的保活包,所以它们显然是相关的 - 相反。当队列为空时,会创建保持活动的数据包。