我正在嘗試設置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