Ошибка вызова WSACleanup() убивает WSAStartup()

У меня есть приложение, которое работает на TCP-сервере. Для инициализации TCP я запускаю WSAStartup(), Тогда мне нужно загрузить стороннюю DLL. Dll также выполняет некоторую работу по TCP и имеет некоторую ошибку - она ​​работает WSACleanup() без бега WSAStartup(), Эта ошибка тормозит мой TCP-сервер, так как DLL WSACleanup() убивает это.

Я не могу исправить DLL. Как избежать этой ситуации. Похоже, запустить использовать DLL и мой TCP-сервер в разных потоках не помогает

1 ответ

Решение

Как вы можете видеть в WSAStartup док, то WSAStartup/WSACleanup выполнить внутренний подсчет ссылок. Поэтому все, что вам нужно сделать, это позвонить WSAStartup дважды.

Таким образом, когда ваша библиотека вызывает WSACleanup, это только уменьшит внутренний счетчик на один и не освободит все ресурсы.

Другие вопросы по тегам