㈠ 伺服器怎麼判斷心跳包
用sendUrgentData這個來判斷服務端是否異常關閉
想實現自動連接服務端,如果用
socket=newSocket("192.168.1.4",1821);
socket.connect();
只有每次去new創建這個sock對象,因為只有sock對象創建好了才由輸入輸出流
目前的實現方式就是,
1.在原有的基礎上,再開多一個線程,專門負責發送心跳,
2.先睡眠500毫秒,
3.用socket.sendUrgentData(FF),給服務端,
4.如果服務端異常關閉的話,我就捕捉這個異常。。。
5.循環
心跳的意思就是每隔一段時間,客戶端給伺服器發一段消息:
1、客戶端:伺服器,我還活著,你死了沒
2、伺服器:客戶端,我知道你還活著這個信息,我已經記錄下來了,同時告訴你我也還活著
更多問題到問題求助專區http://bbs.hounwang.com/
㈡ 伺服器搭建中,心跳線的作用
心跳線是用於連接A、B兩台伺服器間的網線。在這兩台伺服器A、B中,A為工作機,B為備份機,它們之間通過一根心跳線來連接。一般在伺服器上都配有兩塊網卡,其中一塊專門用於兩台伺服器(節點)間的通訊。安裝在伺服器上的軟體通過心跳線來實時監測對方的運行狀態。一旦正在工作的主機A因為各種硬體故障,如電源失效、主要部件失效或者啟動盤失效等導致系統發生故障,心跳線會反映給互為備份的另外一台主機,主機B可以立即投入工作。這樣可以在最大限度上保證網路的正常運行。這也稱為「心跳檢測」。心跳線主要利用一條RS-233檢測鏈路來完成,採用Ping方式檢測驗證系統Down機檢測的准確性。
㈢ 什麼是TCP/IP通訊中的心跳包
心跳包就是在客戶端和伺服器間定時通知對方自己狀態的一個自己定義的命令字,按照一定的時間間隔發送,類似於心跳,所以叫做心跳包。
心跳包在GPRS通信和CDMA通信的應用方面使用非常廣泛。數據網關會定時清理沒有數據的路由,心跳包通常設定在30-40秒之間。
所謂的心跳包就是客戶端定時發送簡單的信息給伺服器端告訴它我還在而已。代碼就是每隔幾分鍾發送一個固定信息給服務端,服務端收到後回復一個固定信息如果服務端幾分鍾內沒有收到客戶端信息則視客戶端斷開。
(3)什麼叫心跳伺服器擴展閱讀:
心跳包作用:
在TCP的機制裡面,本身是存在有心跳包的機制的,也就是TCP的選項。系統默認是設置的是2小時的心跳頻率。但是它檢查不到機器斷電、網線拔出、防火牆這些斷線。而且邏輯層處理斷線可能也不是那麼好處理。一般,如果只是用於保活還是可以的。
心跳包一般來說都是在邏輯層發送空的包來實現的。下一個定時器,在一定時間間隔下發送一個空包給客戶端,然後客戶端反饋一個同樣的空包回來,伺服器如果在一定時間內收不到客戶端發送過來的反饋包,那就只有認定說掉線了。只需要send或者recv一下,如果結果為零,則為掉線。
但是,在長連接下,有可能很長一段時間都沒有數據往來。理論上說,這個連接是一直保持連接的,但是實際情況中,如果中間節點出現什麼故障是難以知道的。更要命的是,有的節點(防火牆)會自動把一定時間之內沒有數據交互的連接給斷掉。
㈣ 什麼是心跳機制
心跳包,通常是客戶端每隔一小段時間向伺服器發送的一個數據包,通知伺服器自己仍然在線,並傳輸一些可能有必要的數據。因按照一定的時間間隔發送,類似於心跳,所以叫做心跳包。事實上為了保持長連接,至於包的內容,是沒有特別規定的,不過一般都是很小的包,或者只是包含包頭的一個空包。
在TCP協議的機制裡面,本身是存在有心跳包機制的,也就是TCP協議中的SO_KEEPALIVE,系統默認是設置2小時的心跳頻率。需要用要用setsockopt將SOL_SOCKET.SO_KEEPALIVE設置為1才是打開,並且可以設置三個參數tcp_keepalive_time/tcp_keepalive_probes/tcp_keepalive_intvl,分別表示連接閑置多久開始發keepalive的ACK包、發幾個ACK包不回復才當對方死了、兩個ACK包之間間隔多長。
TCP協議會向對方發一個帶有ACK標志的空數據包(KeepAlive探針),對方在收到ACK包以後,如果連接一切正常,應該回復一個ACK;如果連接出現錯誤了(例如對方重啟了,連接狀態丟失),則應當回復一個RST;如果對方沒有回復,伺服器每隔多少時間再發ACK,如果連續多個包都被無視了,說明連接被斷開了。
「心跳檢測包」是屬於TCP協議底層的檢測機制,上位機軟體只是解析顯示網口的有用數據包,收到心跳包報文屬於TCP協議層的數據,一般軟體不會將它直接在應用層顯示出來,所以看不到。乙太網中的「心跳包」可以通過「乙太網抓包軟體」分析TCP/IP協議層的數據流看到。報文名稱」TCP Keep-Alive」。
一些比較可靠的乙太網轉串口模塊,都有心跳包的檢測,比如致遠電子的ZNE-100TL模塊,配置「心跳包檢測」間隔時間設為「10」秒,使用一款」wireshark」的抓包軟體來實際查看下TCP/IP協議層「心跳包」數據。