生命的存在,總是有方法可以證明的,就像人類可以以心跳來證明自己的生命依然在運轉,服務器可以嗎?那么服務器如何來證明自己還“活著”呢?
其實,服務器也有自己的“心跳”,心跳包是客戶端和服務器間定時通知對方自己狀態的一個自己定義的命令字,按照一定的時間間隔發送,類似于心跳,所以叫做心跳包。
網絡中的接收和發送數據都是使用SOCKET進行實現。但是如果此套接字已經斷開,那發送數據和接收數據的時候就一定會有問題。所謂的心跳包就是客戶端定時發送簡單的信息給服務器端告訴它我還在而已。代碼就是每隔幾分鐘發送一個固定信息給服務端,服務端收到后回復一個固定信息如果服務端幾分鐘內沒有收到客戶端信息則視客戶端斷開。
在獲知了斷線之后,服務器邏輯可能需要做一些事情,比如斷線后的數據清理和重新連接等等,心跳包主要也就是用于長連接的保活和斷線處理,有了它我們就可以判斷服務器到底是在線還是離線了。
D1Net評論:
服務器的也有生命,就像人有生命一樣,服務器有了生命才能正常運轉,但是,通過離線或者斷線,可以判斷服務器是否能夠運作,斷線和離線就如同是服務器的脈搏一樣。