Я работаю над существующей библиотекой DLL, в которой создан прослушивающий сокет TCP и настроен на немедленное повторное связывание с этим сокетом с использованием SO_REUSEADDR в случае сбоя. Однако в настоящее время существует проблема, из-за которой слушатель остается в состоянии LISTENING даже после успешного вызова closesocket (); так как он не вводит TIME_WAIT, новый слушатель создается на том же порту при воссоздании сокета. Клиенты тогда не в состоянии соединиться с новым слушателем (предположительно). SO_LINGER установлен на 0 секунд. Нет ожидающих передач, когда сокет закрыт. Самая старая розетка закрывается примерно через десять секунд без видимого перехода в другое состояние.
Что может удерживать слушателя в состоянии LISTENING после успешного вызова closesocket ()?