对WSACleanup()的Buggy调用会杀死WSAStartup()

Buggy call to WSACleanup() kills WSAStartup()

本文关键字:WSAStartup Buggy WSACleanup 调用      更新时间:2023-10-16

我有一个正在运行TCP服务器的应用程序。要初始化TCP,我运行WSAStartup()。然后我需要加载第三方dll。Dll也做一些TCP工作,并且有一些错误——它运行WSACleanup()而不运行WSAStartup()。这个错误使我的TCP服务器停止运行,因为dll的WSACleanup()会杀死它。

我无法修复dll。如何避免这种情况。看起来运行时使用dll,而我的TCP服务器在不同的线程中对没有帮助

正如您在WSAStartup文档中看到的,WSAStartup/WSACleanup执行内部引用计数。因此,您只需要调用WSAStartup两次。

因此,当您的库调用WSACleanup时,它只会将内部计数减少一,而不会释放所有资源。