Как настроить TCP Keep Alive на определенное значение с помощью Boost ASIO? - PullRequest
2 голосов
/ 31 января 2012

Я знаю, что в boost ASIO есть опция сокета для включения поддержки tcp, но как мне установить для нее определенное значение?

Если не через Boost, определенные типы, возможно, я смогу получить дескриптор сокета и установить опцию, используя вызов posix setsocketopt ()?

1 Ответ

1 голос
/ 31 января 2012

Есть две части, которые нужно поддерживать.Во-первых, его можно включить с помощью значений по умолчанию.Во-вторых, оставьте в живых интервал и время ожидания может быть установлено.

Для первой части вы можете использовать это:

unsigned long val = 1;
int res = setsockopt(socket, SOL_SOCKET, SO_KEEPALIVE, (char*)&val, sizeof val);

Параметры поддержки активности нельзя установить в posix.Однако в Windows это можно сделать следующим образом:

tcp_keepalive alive;
alive.onoff = TRUE;
alive.keepalivetime = 60000; 
alive.keepaliveinterval = 1000;
int bytes_ret=0;
res = WSAIoctl(socket, SIO_KEEPALIVE_VALS, &alive, sizeof(alive), NULL, 0, 
    &bytes_ret, NULL, NULL);

Как в Windows, так и в Linux вы можете определить время ожидания активности и интервал для всей системы.

...