天天看點

Tcp心跳包

什麼是心跳機制?

所謂的心跳包就是(探測性的)資料包,之是以叫心跳包是因為:它像心跳一樣每隔固定時間發一次,以此來告訴伺服器,這個用戶端還活着。事實上這是為了保持長連接配接,至于這個包的内容,是沒有什麼特别規定的,不過一般都是很小的包,或者隻包含標頭的一個空包。

為什麼需要心跳機制?

采用TCP連接配接的C/S模式軟體,連接配接的雙方在連接配接空閑狀态時,如果任意一方意外崩潰、當機、網線斷開或路由器故障,另一方無法得知TCP連接配接已經失效,除非繼續在此連接配接上發送資料導緻錯誤傳回。很多時候,這不是我們需要的。我們希望伺服器端和用戶端都能及時有效地檢測到連接配接失效,然後優雅地完成一些清理工作并把錯誤報告給使用者。

心跳檢測步驟:

1.服務端每隔一個時間間隔發生一個探測包給用戶端

2.服務端發包時啟動一個逾時定時器

3.用戶端端接收到檢測包,應該回應一個包

4.如果服務端收到用戶端的應答包,則說明用戶端正常,删除逾時定時器

5.如果服務端端的逾時定時器逾時,依然沒有收到應答包則說明用戶端挂了