C# Все сокеты идут вниз

Я пытаюсь понять, что может привести к тому, что все сокеты для данного приложения будут закрываться / закрываться и не открываться снова.

Мое приложение имеет несколько сокетов (http, ftp и т. Д.) И будет работать в течение некоторого времени, хотя в какой-то момент (несколько детерминированный) все сокеты отключатся (я вижу это через ProcMon).

Я боюсь Exception: An established connection was aborted by the software in your host machine исключение. Затем, если я пытаюсь открыть сокет (ы) снова, я получаю сообщение об ошибке WSAStartup возможно, не был вызван.

Какие инструменты или методы я могу использовать для устранения такой проблемы?

1 ответ

Решение

По предложению я публикую это как ответ.

Спасибо всем за руководство, я смог решить эту проблему. Я звонил WSAStartup а также WSACleanup неровное количество раз. Когда дополнительный WSACleanup Хиты, он закрывает все сокеты во всех потоках для приложения (см. документацию MSDN).

В многопоточной среде WSACleanup завершает операции сокетов Windows для всех потоков.

Я добавил простой статический счетчик вокруг каждого в автозагрузку (++) и все вызывал бы очистку, если бы счетчик был>0. Задача решена.

Надеюсь, что это помогает другим.

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