Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/153.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ TCP输出队列阻塞是否保持活动状态?_C++_Linux_Tcp_Keep Alive - Fatal编程技术网

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

C++ TCP输出队列阻塞是否保持活动状态?,c++,linux,tcp,keep-alive,C++,Linux,Tcp,Keep Alive,我有以下情况: 已建立TCP连接。客户机(运行linux)已激活keep alive,并可按要求工作 现在的问题是:当我拔下客户端服务器请求和客户端响应之间的以太网电缆时,“保持活动”停止工作 我从netstat看到Send-Q被填充了。send-q是否与TCP保持活动相关?有办法清除这个队列吗 问候,, FrogtimeTCP keep alive只是一种花哨的说法,“如果没有数据,则发送0字节的数据包以保持连接处于活动状态”。由于您仍在发送报头,而另一方仍需确认,因此在IP级别,您仍在通信,

我有以下情况: 已建立TCP连接。客户机(运行linux)已激活keep alive,并可按要求工作

现在的问题是:当我拔下客户端服务器请求和客户端响应之间的以太网电缆时,“保持活动”停止工作

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

问候,,
Frogtime

TCP keep alive只是一种花哨的说法,“如果没有数据,则发送0字节的数据包以保持连接处于活动状态”。由于您仍在发送报头,而另一方仍需确认,因此在IP级别,您仍在通信,但不是在套接字级别


显然,拔掉插头会阻止IP数据包和保持活动。而且,只要有一个send-Q,发送空的keep-alive包就没有意义,所以它们显然是相关的——相反。当队列为空时,将创建保持活动状态的数据包。

好的,谢谢。我就是这么想的。有没有办法清空send-Q?@Frogtime:就像“取消发送”数据一样?是的。例如:如果send-q大小有一段时间没有更改,“取消发送”数据,那么TCP保持活动状态将再次工作。@Frogtime:这没有意义。别再把“保持活力”当成魔法了,读我写的吧。因为有TCP数据,所以发送空的TCP数据包是没有意义的。我明白你在说什么。关键是:客户机从不关闭其套接字,因为它不知道连接在较低的级别上。是关闭套接字的唯一方法,还是在链接关闭时手动关闭?我试图在TCP层本身上解决这个问题。定义“停止工作”。