Как установить интервал сохранения активности для winsock - PullRequest
10 голосов
/ 18 ноября 2011

Я использую winsock и TCP.Я установил параметр KeepAlive следующим образом

int aliveToggle = 1;
setsockopt(mySocket,SOL_SOCKET,SO_KEEPALIVE,(char*)&aliveToggle, sizeof(aliveToggle));

Но как указать время и интервал Keep aLive?

Я использую VC ++, работающий в Windows 7.

Ответы [ 2 ]

18 голосов
/ 02 апреля 2013

С помощью c / c ++ вы сможете использовать SIO_KEEPALIVE_VALS для управления тайм-аутами. Вы не можете использовать setsockopt, но вы должны быть в состоянии использовать WSAIoctl. Смотри http://msdn.microsoft.com/en-us/library/windows/desktop/dd877220%28v=vs.85%29.aspx

Вот пример http://read.pudn.com/downloads79/ebook/301417/Chapter09/SIO_KEEPALIVE_VALS/alive.c__.htm

4 голосов
/ 18 ноября 2011

Два параметра реестра для интерфейса под ключом \ HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Tcpip \ Parameters управляют поведением keep-alive TCP / IP:

Значение KeepAliveTime указывает, как долго TCP-соединение простаиваетбез трафика, прежде чем TCP отправит пакет keep-alive.По умолчанию установлено значение 7 200 000 миллисекунд (мс) или 2 часа.

Значение KeepAliveInterval указывает, сколько миллисекунд следует ожидать ответа после отправки подтверждения активности, прежде чем повторять проверку активности.Если ответ не получен, стек TCP / IP продолжает отправлять сообщения активности с этим интервалом до тех пор, пока ответ не будет получен или пока стек не достигнет предела повторения пакетов, указанного в разделе реестра TCPMaxDataRetransmissions.По умолчанию для KeepAliveInterval установлено значение 1 секунда (1000.

. По умолчанию протоколы проверки активности TCP отключены, но приложения Windows Sockets могут использовать функцию setsockopt, чтобы включить их для каждого подключения.

Примечание. Еслиразработчик решает использовать сообщения поддержки активности TCP для определенного соединения, время этих сообщений определяется значениями реестра, описанными выше. Невозможно использовать разные сроки для разных запросов поддержки активности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...