繁体   English   中英

TCP套接字服务器

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM