Страниц: [1]
  Печать  
Автор Тема: KEEPALIVE в QNX4.25  (Прочитано 859 раз)
BrutNemo
Участник
*
Offline Offline

Сообщений: 26


Просмотр профиля
« : Января 13, 2017, 10:42:54 am »

Доброго времени суток!

Для обнаружения физического разрыва соединения предполагается использовать опцию SO_KEEPALIVE.
Включение и изменение периода неактивности (по умолчанию 2 часа) делается следующим образом:

Код:
int on = 1;  struct timeval tval = { 20, 0 };

// Включение
setsockopt(Sock, SOL_SOCKET,  SO_KEEPALIVE,  (void*)&on,   sizeof(on));
// Изменение периода неактивности
setsockopt(Sock, IPPROTO_TCP, TCP_KEEPALIVE, (void*)&tval, sizeof(tval));

Подскажите, есть ли возможность изменить количество пакетов (по умолчанию - 8 ) и таймаут между ними (по умолчанию 75 сек)?
Записан
darkelf
QOR.Moderator
*****
Offline Offline

Сообщений: 252


Просмотр профиля
« Ответ #1 : Января 13, 2017, 05:53:50 pm »

Для обнаружения физического разрыва соединения предполагается использовать опцию SO_KEEPALIVE.
Включение и изменение периода неактивности (по умолчанию 2 часа) делается следующим образом:

Код: (C)
int on = 1;  struct timeval tval = { 20, 0 };

// Включение
setsockopt(Sock, SOL_SOCKET,  SO_KEEPALIVE,  (void*)&on,   sizeof(on));
// Изменение периода неактивности
setsockopt(Sock, IPPROTO_TCP, TCP_KEEPALIVE, (void*)&tval, sizeof(tval));
К сожалению уже довольно давно не занимаюсь QNX, но вроде TCP_KEEPALIVE требовало int*, а не struct timeval*.

Подскажите, есть ли возможность изменить количество пакетов (по умолчанию - 8 ) и таймаут между ними (по умолчанию 75 сек)?
Не уверен. Возможно какие-то настройки можно сделать через sysctl, если у Вас версия реализации стека протоколов TCPIP 5.0, а не 4.25.
Записан
BrutNemo
Участник
*
Offline Offline

Сообщений: 26


Просмотр профиля
« Ответ #2 : Января 13, 2017, 06:41:09 pm »

Цитировать
К сожалению уже довольно давно не занимаюсь QNX, но вроде TCP_KEEPALIVE требовало int*, а не struct timeval*.
Скорее всего int* это правильно, спасибо.

Цитировать
Не уверен. Возможно какие-то настройки можно сделать через sysctl, если у Вас версия реализации стека протоколов TCPIP 5.0, а не 4.25.
А если версия стека протоколов TCPIP 4.25?
Записан
darkelf
QOR.Moderator
*****
Offline Offline

Сообщений: 252


Просмотр профиля
« Ответ #3 : Января 16, 2017, 09:27:07 am »

Цитировать
Не уверен. Возможно какие-то настройки можно сделать через sysctl, если у Вас версия реализации стека протоколов TCPIP 5.0, а не 4.25.
А если версия стека протоколов TCPIP 4.25?
Там, насколько я помню, sysctl нет совсем.
Записан
Страниц: [1]
  Печать  
 
Перейти в: