2016-11-05 1 views
-2

У меня есть сервер winsock, который использует WSAECONNRESET, код ошибки 10054. Я могу выполнить это, используя функцию exit(), но затем мне придется перезапустить мое приложение.winsock, как отправить RST, ACK или RST пакет

Вопрос заключается в том, как убить установленное соединение и отправить первый пакет на мой сервер, чтобы он был точно таким же, как процессы, которые происходят, когда я использую exit(), но не использую его. Поэтому мое приложение должно продолжать работать, но оно должно убивать соединение с пакетом RST. В основном я хочу подражать CTRL + C или exit() или terminate(), чтобы пакет RST был отправлен.

Я попробовал SO_LINGER варианты гнезд в сочетании с socketclose(); и shutdown(); но это не вызывает событие WSAECONNRESET.

ответ

1

Я попытался SO_LINGER опции сокета

Вы должны установить его «на» с нулевой тайм-аут.

в сочетании с socketclose();

правильно.

и shutdown();

Неправильно. Удалите это. Он отправляет FIN.

но это не вызывает событие WSAECONNRESET.

Из-за shutdown(). Удалите это.

+0

плохо попробуйте. Но я обнаружил, что WSACleanup() также вызывает это событие, потому что он «прекращает использование Winsock 2 dll». – br0lly

+0

Он будет делать это для всех сокетов, но это слишком много. Дорога выше - это стандартный способ сделать это. – EJP

+0

ОК. Я использую только один сокет, так что все в порядке. но все же спасибо за помощь. – br0lly

 Смежные вопросы

  • Нет связанных вопросов^_^