怎樣解決W5200/W5500在TCP通信過程中意外斷開?(Keepalive)

在使用 W5200 和 W5500 的TCP通信過程中,有一個非常容易被問到的問題: (這裡以W5200為例) W5200 作為服務器,假如客戶端的網線斷開 或 瞬間停電,服務器該怎樣判斷? 那麼當客戶端由於這些原因忽然斷開,該怎樣解決? 今天給大家介紹解決以上問題的辦法,即如何使用Keepalive。 什麼是 Keepalive? Keepalive 即心跳檢測,以下簡稱 KA,之所以稱之為心跳檢測是因為它像心跳一樣每隔一段時間發一次,以此來告訴對方自己是否存活。心跳檢測用於TCP通訊過程中服務器檢測客戶端是處於長時間空閑(在線)還是已經斷開,一般采用客戶端定時發送簡單的通訊包,一般是很小的包或者空包給服務器(W5200 的心跳包為1字節),如果在指定時間內沒有收到該心跳包,則服務器會判斷客戶端已經斷開,此時程序中的 Socket 狀態機會轉到 SOCKET_CLOSED 並重新打開 Socket去連接服務器/監聽客戶端。 KeepAlive 怎麼分類?…

View More 怎樣解決W5200/W5500在TCP通信過程中意外斷開?(Keepalive)