对WSACleanup()的Buggy调用会杀死WSAStartup()
Buggy call to WSACleanup() kills WSAStartup()
我有一个正在运行TCP服务器的应用程序。要初始化TCP,我运行WSAStartup()
。然后我需要加载第三方dll。Dll也做一些TCP工作,并且有一些错误——它运行WSACleanup()
而不运行WSAStartup()
。这个错误使我的TCP服务器停止运行,因为dll的WSACleanup()
会杀死它。
我无法修复dll。如何避免这种情况。看起来运行时使用dll,而我的TCP服务器在不同的线程中对没有帮助
正如您在WSAStartup
文档中看到的,WSAStartup
/WSACleanup
执行内部引用计数。因此,您只需要调用WSAStartup
两次。
因此,当您的库调用WSACleanup
时,它只会将内部计数减少一,而不会释放所有资源。