心跳包檢測不可檢測斷線 (轉(zhuǎn))
一般是用來判斷對(duì)方(設(shè)備,進(jìn)程或其它網(wǎng)元)是否正常動(dòng)行,一般采用定時(shí)發(fā)送簡單的通訊包,如果在指定時(shí)間段內(nèi)未收到對(duì)方響應(yīng),則判斷對(duì)方已經(jīng)當(dāng)?shù)簟S糜跈z測TCP的異常斷開。
基本原因是服務(wù)器端不能有效的判斷客戶端是否在線也就是說,服務(wù)器無法區(qū)分客戶端是長時(shí)間在空閑,還是已經(jīng)掉線的情況.所謂的心跳包就是客戶端定時(shí)發(fā)送簡單的信息給服務(wù)器端告訴它我還在而已。
代碼就是每隔幾分鐘發(fā)送一個(gè)固定信息給服務(wù)端,服務(wù)端收到后回復(fù)一個(gè)固定信息
如果服務(wù)端幾分鐘內(nèi)沒有收到客戶端信息則視客戶端斷開。比如有些通信軟件長時(shí)間不使用,要想知道它的狀態(tài)是在線還是離線就需要心跳包,定時(shí)發(fā)包收包。
發(fā)包方:可以是客戶也可以是服務(wù)端,看哪邊實(shí)現(xiàn)方便合理。一般是客戶端。服務(wù)器也可以定時(shí)輪詢發(fā)心跳下去。
一般來說,出于效率的考慮,是由客戶端主動(dòng)向服務(wù)器端發(fā)包,而不是相反。
示例代碼:





























































HttpSender代碼:































































posted on 2007-12-07 17:43 都市淘沙者 閱讀(3180) 評(píng)論(0) 編輯 收藏 所屬分類: Java Basic/Lucene/開源資料