我正在尝试设置TCP存活,但这样做的,我看到的错误tcp keepalive - 协议不可用?
“协议不可用”
int rc = setsockopt(s, SOL_SOCKET, TCP_KEEPIDLE, &keepalive_idle, sizeof(keepalive_idle));
if (rc < 0)
printf("error setting keepalive_idle: %s\n", strerror(errno));
我能够打开存活,设置存活时间间隔和次数但存活闲置是存活时间抛出的错误,我从来没有看到正在发送/接收或者使用Wireshark和过滤器的任何保留数据包tcp.analysis.keep_alive
或使用tcpdump
sudo tcpdump -vv "tcp[tcpflags] == tcp-ack and less 1"
是否有一个内核模块塔吨需要加载或什么?或者你不再能够覆盖全球KEEPIDLE时间。
通过
[email protected]:~/ sysctl net.ipv4.tcp_keepalive_time net.ipv4.tcp_keepalive_probes net.ipv4.tcp_keepalive_intvl
net.ipv4.tcp_keepalive_time = 7200
net.ipv4.tcp_keepalive_probes = 9
net.ipv4.tcp_keepalive_intvl = 75
tcp_keepalive_time以秒为单位的时间被发送的第一个活动包之前。根据你的例子,它被设置为2小时。你真的等了那么久吗?减少它,然后再试一次。 – KBart
@KBart - 确切地说。这是默认设置。我想从默认值改变它,但它给了我“协议不可用”。 – Matt