tcp closesocket метод сброса генерации winsock (RST)
Функция закрытия сокета Windows (closesocket) генерирует RST.
В Linux, когда я вызываю функцию close для закрытия tcp-сокета, он проходит через fin / ack с обоих клиентских серверов, и сокет закрывается.
Но на Windows Winsock, когда я вызываю closesocket, он всегда генерирует сообщение RST.
Я попытался с помощью вызова выключения. Это порождает FIN. Но, наконец, я должен вызвать closesocket, и он отправляет RST.
Есть ли способ вызвать closesocket для освобождения ресурсов сокета без отправки сообщения RST.
1 ответ
Есть несколько вещей, которые могут вызвать closesocket()
отправить RST вместо FIN:
- Вызывается, когда в буфере приема сокета ожидают непрочитанные данные.
- Вызывая его после того, как вы установили опцию SO_LINGER в "on" с нулевым тайм-аутом.
Если больше нет данных для отправки и / или получения, вы можете использовать "shutdown()".
Пример: выключение (clisocket, SD_BOTH);