【发布时间】:2017-09-12 12:09:24
【问题描述】:
我有以下函数用于为套接字配置 TCP Keepalive:
int configure_tcp_keepalive(int fd)
{
int opt_val = 1;
if (setsockopt(fd, SOL_SOCKET, SO_KEEPALIVE, &opt_val, sizeof(opt_val)) == -1)
return -1;
int keepcnt = 9; //default value on Linux
if (setsockopt(fd, SOL_TCP, TCP_KEEPCNT, &keepcnt, sizeof(keepcnt)) == -1)
return -1;
int keepidle = 30;
if (setsockopt(fd, SOL_TCP, TCP_KEEPIDLE, &keepidle, sizeof(keepidle)) == -1)
return -1;
int keepintvl = 30;
if (setsockopt(fd, SOL_TCP, TCP_KEEPINTVL, &keepintvl, sizeof(keepintvl)) == -1)
return -1;
}
如果我在服务器 fd 上调用此函数,它会影响每个接受()的客户端(即接受()的客户端是否会继承这些套接字选项并因此配置为 TCP Keepalive)?我宁愿不必为每个客户端调用此函数,以尽量减少开销。谢谢。
【问题讨论】:
标签: c linux sockets tcp setsockopt