我写了一个小程序,可以在特定端口上与服务器交互。该程序可以正常运行,但是:
一旦程序意外终止,并且此套接字连接一直处于CLOSE_WAIT状态显示。如果我尝试运行程序,它将挂起,并且必须强制将其关闭,这会累积 更多的 CLOSE_WAIT套接字连接。
CLOSE_WAIT
有没有一种方法可以清除这些连接?
CLOSE_WAIT表示您的程序仍在运行,并且尚未关闭套接字(内核正在等待它关闭)。添加-p到netstat以获取该pid,然后更加有力地将其杀死(SIGKILL如果需要,可以将其删除)。那应该摆脱您的CLOSE_WAIT套接字。您也可以使用ps来查找pid。
-p
netstat
SIGKILL
ps
SO_REUSEADDR用于服务器和TIME_WAIT套接字,因此不适用于此处。
SO_REUSEADDR
TIME_WAIT