我在 Windows 2008x64 上的一个 C++ 应用程序有问题(同一个应用程序在 Windows 2003x64 上运行得很好)。
在崩溃之后,甚至有时在定期关闭/重启周期之后,它在使用端口 82 上的套接字时遇到问题,它需要接收命令。
查看 netstat 我看到套接字在应用程序停止超过 10 分钟后仍处于侦听状态(该进程肯定不再运行)。
TCP 0.0.0.0:82 LISTENING
我尝试将套接字选项设置为 REUSEADDR 但据我所知,这只影响重新连接到处于 TIME_WAIT 状态的端口。无论哪种方式,这种变化似乎都没有任何区别。
int doReuse = 1;
setsockopt(listenFd, SOL_SOCKET, SO_REUSEADDR,
(const char *)&doReuse, sizeof(doReuse));
有什么想法可以解决或至少避免这个问题吗?
编辑:
做了 netstat -an 但这就是我得到的全部:
TCP 0.0.0.0:82 0.0.0.0:0 LISTENING
对于 netstat -anb 我得到:
TCP 0.0.0.0:82 0.0.0.0:0 LISTENING
[System]
我知道正常关闭,但即使应用程序由于某种原因崩溃,我仍然需要能够重新启动它。有问题的应用程序使用内部使用 Windows 套接字 API 的内部库。
编辑:
显然这个问题没有解决方案,所以为了开发,我将使用代理/工具来解决它。感谢所有的建议,非常感谢。