c++ - TCP输出队列阻塞保活吗?

标签 c++ linux tcp keep-alive

我有以下情况: TCP 连接已建立。客户端(运行 Linux)已激活 keep-alive,并且它按要求工作。

现在的问题是:当我在服务器请求和客户端响应之间拔掉客户端的以太网电缆时,保持事件状态将停止工作。

我从 netstat 看到 Send-Q 已满。 send-q与TCP keep-alive有关吗?有没有办法清除这个队列?

问候, Frog 时光

最佳答案

TCP keep-alive 只是一种奇特的说法,“如果没有数据,则发送 0 字节数据包以保持连接处于事件状态”。由于您仍在发送 header ,而另一方仍必须确认它,因此在 IP 级别您仍在通信,但不是在套接字级别。

显然,unpluggint 会停止 IP 数据包和保持事件状态。另外,只要存在 send-Q,就没有必要发送空的 keep-alive 数据包,因此它们显然是相关的 - 相反。当队列为空时创建保活数据包。

关于c++ - TCP输出队列阻塞保活吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49873685/

相关文章:

c - TCP/IP : message got by recv() in order without keep buffer

c++ - 你如何声明一个内联类?

c++ - MJPEG 流无法在 OpenCV 2.4 中打开

.net - VB6 WinSock TCP 客户端和 .NET TCP 服务器

c - arc 平台上的 linux wifi 驱动程序上的未对齐地址访问崩溃

linux - 获取 v4l2 视频设备的最大分辨率

tcp - 服务器必须重新启动后,服务器和客户端之间的 Winsock TCP 连接能否恢复原样?

c++ - 编写跨平台程序

c++ - 如何在C++中将unsigned int转换为两个unsigned short?

php - Linux主机文件上传