4

我试图了解什么会导致给定应用程序的所有套接字关闭/关闭并且无法再次打开。

我的应用程序有多个套接字(http、ftp 等),并且会运行一段时间,但在某些时候(有些确定性),所有套接字都会关闭(我可以通过 看到这一点ProcMon)。

我得到了可怕的Exception: An established connection was aborted by the software in your host machine例外。然后,如果我再次尝试打开套接字,我会收到一条错误消息,说WSAStartup可能没有被调用。

我可以使用哪些工具或技术来调试此类问题?

4

1 回答 1

0

根据建议,我将其重新发布为答案。

感谢大家的指导,我能够解决这个问题。我打电话WSAStartupWSACleanup次数不均匀。当额外WSACleanup命中时,它会关闭应用程序的所有线程中的所有套接字(请参阅MSDN 文档)。

在多线程环境中,WSACleanup 终止所有线程的 Windows 套接字操作。

我在每个启动(++)周围添加了一个简单的静态计数器,如果计数器大于 0,我都会调用 cleanup。问题解决了。

希望这对其他人有帮助。

于 2014-03-19T16:05:34.157 回答