什么会导致连接挂起在close_wait状态

时间:2017-06-20 07:28:17

标签: c++ sockets tcp

在CentOS 7系统上,C ++应用程序在close_wait状态下挂起连接,守护程序停止响应网络流量。我的理解是内核处理TCP堆栈管理并负责收获这些连接。

什么可能导致这些连接挂起,我应该在这个软件中寻找什么类型的错误?例如,might the application be failing to shut down the socket, or might something else be going on?

1 个答案:

答案 0 :(得分:1)

在CLOSE_WAIT状态下看到连接的末端运行的软件在收到来自其他方的FIN后,没有关闭套接字(例如,显式调用close())。

CLOSE_WAIT状态表示连接处于半关闭状态,即另一端关闭了连接的一端,但此端没有。这在TCP中完全有效,因为连接是全双工的。

TCP Close

在此序列图中,服务器在收到FIN后进入CLOSE_WAIT状态,并将保持该状态,直到它调用close。