[英]TCP socket server
Active Internet connections (w/o servers)
Prot Rec Sen Local Address Foreign Address State PID/PXX
tcp 1 0 192.169.3.120:64007 192.169.3.104:40968 CLOSE_WAIT -
tcp 7 0 192.169.3.120:64007 192.169.3.104:44637 CLOSE_WAIT -
tcp 17 0 192.169.3.120:64007 192.169.3.104:39950 CLOSE_WAIT -
tcp 7 0 192.169.3.120:64007 192.169.3.104:34229 CLOSE_WAIT -
上面的响应来自sudo netstat -p
。
我有一个已连接客户端的应用程序示例服务器。 然后我停止了应用程序并再次启动它,因为我没有使用SO_REUSEADDR,它说绑定错误。 我看到close_wait中几乎没有clinet连接。 我看到我们需要关闭该特定套接字的processid。 但是netstat -p给出空白的进程ID。 因此,如何杀死该进程以及是否有任何方法可以使用c api杀死所有套接字(包括全部)。
CLOSE_WAIT
状态指示某些远程客户端已发送FIN
段以指示其将不发送更多数据,并且已发送ACK
进行确认,但是应用进程尚未close(2)
套接字和内核。等待本地关闭。 某个套接字打开的地方一定有一个本地进程,因为状态只是在等待本地关闭。
还有更多状态在内核管理的套接字上不显示进程(因为没有)。 但是CLOSE_WAIT
表示本地进程已从远程接收到关闭,但尚未完成关闭。 由于内核代表进程执行的任务之一是关闭其所有描述符,如果进程具有exit(2)
ed,则必须已向套接字发出关闭信号,将状态CLOSE_WAIT
移至LAST_ACK
(通常不这样做)。看过)
我看到我们需要关闭该特定套接字的processid
我无法想象在哪里看到的,但是当端口处于CLOSE_WAIT状态时,表明应用程序需要关闭套接字 。 您有套接字泄漏。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.