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. Задача решена.
Надеюсь, что это помогает другим.