Linux如何判斷乙個tcp連線是否活著

2021-09-01 22:50:21 字數 494 閱讀 2286

這兩天伺服器網路不穩定,結果發現了乙個現象:乙個tcp連線的服務端(windows)早已停止,而客戶端(linux)的連線狀態卻一直保持為established,直到第二天中午連線才斷開。在網上搜一下,才知道tcp的相關設定:

#cat /proc/sys/net/ipv4/tcp_keepalive_time

7200

#cat /proc/sys/net/ipv4/tcp_keepalive_intvl

75#cat /proc/sys/net/ipv4/tcp_keepalive_probes

9意思是如果某個tcp連線在idle 7200秒(2個小時)後,核心才發起probe.如果probe 9次(每次75秒)不成功,核心才徹底放棄,認為該連線已失效。

2*9=18小時,這就是為什麼前一天下午網路出問題,到第二天中午那個連線才顯示關掉。

下面轉一點詳細的知識:

const void *optval, socklen_t optlen)

TCP連線狀態 如何判斷乙個TCP連線是否可用

在使用乙個長連線的tcp時,如果tcp伺服器端接收到tcp的客戶端連線過來後,接著伺服器端的tcp節點需要對這個客戶端進行資料收發,收發時需要判斷這個socket是否可用用,判斷方法有多種 1.linux的5種方法,本人在使用modbus伺服器端判斷已經連線的裝置或是gprs伺服器對已經連線的gpr...

TCP連線狀態 如何判斷乙個TCP連線是否可用

在使用乙個長連線的tcp時,如果tcp伺服器端接收到tcp的客戶端連線過來後,接著伺服器端的tcp節點需要對這個客戶端進行資料收發,收發時需要判斷這個socket是否可用用,判斷方法有多種 1.linux的5種方法,本人在使用modbus伺服器端判斷已經連線的裝置或是gprs伺服器對已經連線的gpr...

如何判斷乙個執行緒的存活

pthread kill 別被名字嚇到,pthread kill可不是kill,而是向執行緒傳送signal。還記得signal嗎,大部分signal的預設動作是終止程序的執行,所以,我們才要用signal 去抓訊號並加上處理函式。int pthread kill pthread t thread,...