Из руководства VxWorks "Library Reference" (можно скачать):
ВАРИАНТЫ ДЛЯ ПОТОКОВЫХ ГНЕЗДОВ
В следующих разделах обсуждаются параметры сокетов, доступные для потоковых (TCP) сокетов.
SO_KEEPALIVE - Обнаружение разорванного соединения
Укажите параметр SO_KEEPALIVE, чтобы транспортный протокол (TCP) инициировал таймер для обнаружения разорванного соединения:
setsockopt (sock, SOL_SOCKET, SO_KEEPALIVE, &optval, sizeof (optval));
Это предотвращает зависание приложения на неверном соединении. Значение в optval для этой опции является целым числом (тип int), либо 1 (включено), либо 0 (выключено).
Целостность соединения проверяется путем передачи сегментов TCP нулевой длины, запускаемых таймером, чтобы вызвать ответ от однорангового узла. Если одноранговый узел не отвечает после повторной передачи сегментов KEEPALIVE , соединение сбрасывается, все структуры данных протокола восстанавливаются, а процессы, спящие на соединении, пробуждаются с ошибкой ETIMEDOUT .
Тайм-аут ETIMEDOUT может происходить двумя способами. Если соединение еще не установлено, таймер KEEPALIVE истекает после простоя для TCPTV_KEEP_INIT . Если соединение установлено, таймер KEEPALIVE запускается при отсутствии трафика для TCPTV_KEEP_IDLE . Если ответ от узла не получен после отправки KEEPALIVE сегмента TCPTV_KEEPCNT раз с интервалом TCPTV_KEEPINTVL , TCP предполагает, что соединение недопустимо. Параметры TCPTV_KEEP_INIT , TCPTV_KEEP_IDLE , TCPTV_KEEPCNT и TCPTV_KEEPINTVL определены в файле target / h / net / tcp_timer.h.