Поддерживаются как Linux, так и Windows TCP keep-alive
. Они могут быть активированы и настроены с помощью (зависящих от системы) вызовов setsockopt
, см., Например, this article для случая с Linux. При использовании boost::asio
, похоже, поддерживается поддержка сообщений keep-alive, см. the current documentation. Однако эта страница охватывает только ее активацию. В нескольких новых ответах на older post было указано, что Boost недавно добавил средства для настройки тайм-аутов по операциям (что устраняет необходимость в кодах-ветвях setsockopt
и #ifdef
для разных систем). Тем не менее, recent response все еще предлагает вызовы на родные сокеты.Конфигурирование TCP keep_alive с boost :: asio
Мой вопрос: Как настроить временной интервал и тайм-ауты пакетов keep-alive с помощью boost::asio
?
@KillianDS Почту вы цитируете сделки с 'SO_RCVTIMEO 'и' SO_SNDTIMEO'. В текущих вопросах конкретно рассматриваются другие константы. Если вы прочтете ссылку на статью, вы обнаружите, что необработанные параметры в системах Linux - это «TCP_KEEPIDLE» и «TCP_KEEPINTVL». Кроме того, принятый ответ предполагает использование сырых сокетов, которые я явно пытался избежать. – user8472
Нет, это не так, он берет собственный дескриптор, который не совпадает с сырым сокетом. И хотя он может говорить о разных вариантах, чем вы хотите, процедура * точно * одинакова (вы даже приняли очень похожий ответ здесь, который использует те же параметры). – KillianDS