У меня есть клиент-серверное приложение, и я установил опцию keep alivce socket на стороне сервера. Я понимаю концепцию поддержки активности, но как мне обрабатывать событие поддержки активности, определяет ли механизм поддержки активности проблему на другом конце, и я хочу закрыть тот сокет, который подключен к этому клиенту.
Я посмотрел на функцию WSAIoctl, но не понял, может ли она решить мою проблему.
Я получил этот пример онлайн:
tcp_keepalive KeepAlive;
DWORD dJunk;
// Use socket level keep alive for about 5 minutes
// Unless this is done Microsoft will not close the socket
// in the event of a cable / VPN disconnection for 2 hours.
KeepAlive.onoff = 1;
KeepAlive.keepalivetime = 60000;
KeepAlive.keepaliveinterval = 60000;
WSAIoctl( soc, SIO_KEEPALIVE_VALS, &KeepAlive, sizeof( KeepAlive ), NULL, 0,
&dJunk, NULL, NULL );
Я знаю, что это очень теоретический вопрос, но у меня действительно нет связанных частей кода.
Итак, еще раз, мой вопрос заключается в том, как я должен обрабатывать сбой соединения, как другой конец отключен.
Вы не Нет такой вещи как «keepalive событие». TCP делает все это за вас. Если таймер поддержки активности истекает, соединение будет сброшено.
Других решений пока нет …