【发布时间】:2013-03-26 03:41:48
【问题描述】:
我有一个客户端应用程序,它使用非托管 dll 与服务器通信。
所有与网络相关的操作都在非托管 dll 中进行。 在与服务器进行多次操作后,客户端的 TCP 端口已用完。 如果我们使用 'netstat -an' 检查 netwotk 的状态,我们会得到以下结果:
...
TCP 192.168.11.55:56048 192.168.10.28:5000 FIN_WAIT_2
TCP 192.168.11.55:56049 192.168.10.28:5000 FIN_WAIT_2
TCP 192.168.11.55:56050 192.168.10.28:5000 FIN_WAIT_2
TCP 192.168.11.55:56051 192.168.10.27:5000 FIN_WAIT_2
TCP 192.168.11.55:56052 192.168.10.28:5000 FIN_WAIT_2
TCP 192.168.11.55:56053 192.168.10.27:5000 FIN_WAIT_2
TCP 192.168.11.55:56054 192.168.10.27:5000 FIN_WAIT_2
TCP 192.168.11.55:56055 192.168.10.27:5000 FIN_WAIT_2
TCP 192.168.11.55:56056 192.168.10.27:5000 FIN_WAIT_2
TCP 192.168.11.55:56057 192.168.10.28:5000 FIN_WAIT_2
TCP 192.168.11.55:56058 192.168.10.27:5000 FIN_WAIT_2
TCP 192.168.11.55:56059 192.168.10.28:5000 FIN_WAIT_2
TCP 192.168.11.55:56060 192.168.10.27:5000 FIN_WAIT_2
...
只有在客户端关闭后才会释放端口。
如果我在调试模式下运行 VS 项目,它永远不会耗尽端口。 但是,在发布模式下运行时,它正在发生。
而且我既无权访问服务器也无权访问客户端源。
如何释放或杀死处于FIN_WAIT_2状态的端口?
【问题讨论】: