1. 程式人生 > >關於TCP連線極端異常情況的處理方法的思考

關於TCP連線極端異常情況的處理方法的思考

這裡說的極端異常情況,不是對方(伺服器或者客戶端)一般的異常情況,即引用該TCP連線的程序異常退出而由OS直接發出FIN或者RST包,從而關閉這個連線。這樣本方會受到SOCKET_ERR返回,或者len=0的資料。

這裡說的極端情況是對方主機或者網路裝置突然斷電造成的連線直接中斷。對方沒有任何機會發送報文來通知本方。

這樣的情況下,本方的TCP連線不會上報任何錯誤,而是認為對方處於靜默狀態。

對於這樣的情況,如何進行判斷和處理呢

一般有2個處理思路,

一是TCP 的keepalive機制

二是應用層的心跳機制。