如何使用Boost ASIO将TCP Keep Alive设置为特定值



我知道boost ASIO有一个套接字选项来启用tcp保持活动,但我如何将其设置为特定值?

如果不是通过Boost定义的类型,也许我可以获得套接字句柄并使用posix-setsocketopt()调用设置选项?

有两个部分可以保持活力。首先,可以使用默认值启用它。第二,可以设置保活间隔和超时。

对于第一部分,你可以使用这个:

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上,您都可以在系统范围内定义保持活动超时和间隔。

最新更新