1. 在看CDMA無線路由器的說明書時,有一個TCP層心跳,指的什麼意思
心跳包就是在客戶端和伺服器間定時通知對方自己狀態的一個自己定義的命令字,按照一定的時間間隔發送,類似於心跳,所以叫做心跳包。用來判斷對方(設備,進程或其它網元)是否正常運行,採用定時發送簡單的通訊包,如果在指定時間段內未收到對方響應,則判斷對方已經離線。用於檢測TCP的異常斷開。基本原因是伺服器端不能有效的判斷客戶端是否在線,也就是說,伺服器無法區分客戶端是長時間在空閑,還是已經掉線的情況。所謂的心跳包就是客戶端定時發送簡單的信息給伺服器端告訴它我還在而已。代碼就是每隔幾分鍾發送一個固定信息給服務端,服務端收到後回復一個固定信息如果服務端幾分鍾內沒有收到客戶端信息則視客戶端斷開。-F
2. java程序裡面心跳響應是什麼意思
就是客戶端與伺服器端連接斷開與否的檢測,一般用於檢測連接是否超時
3. 伺服器怎麼判斷心跳包
用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/
4. 什麼是心跳伺服器IP,有什麼作用
心跳網路。伺服器組機器之間私網
一般存在於伺服器集群、多機並行時用的。
是伺服器組各個機器之間傳遞信息用的。
比如故障轉移集群伺服器的心跳。集群網路是對外正常工作通訊的,心跳網路就是A\B機之間傳遞信息,相互驗證對方是否還在正常運行用的。比如平時是A機在運行服務,A、B機之間會每隔一段時間通過心跳網詢問對方是否還正常,如果A伺服器宕機了,B得不到回應,就行把集群資源拿過來繼續運行服務。
5. 什麼是TCP/IP通訊中的心跳包
心跳包就是在客戶端和伺服器間定時通知對方自己狀態的一個自己定義的命令字,按照一定的時間間隔發送,類似於心跳,所以叫做心跳包。
心跳包在GPRS通信和CDMA通信的應用方面使用非常廣泛。數據網關會定時清理沒有數據的路由,心跳包通常設定在30-40秒之間。
所謂的心跳包就是客戶端定時發送簡單的信息給伺服器端告訴它我還在而已。代碼就是每隔幾分鍾發送一個固定信息給服務端,服務端收到後回復一個固定信息如果服務端幾分鍾內沒有收到客戶端信息則視客戶端斷開。
(5)伺服器心跳檢測是什麼擴展閱讀:
心跳包作用:
在TCP的機制裡面,本身是存在有心跳包的機制的,也就是TCP的選項。系統默認是設置的是2小時的心跳頻率。但是它檢查不到機器斷電、網線拔出、防火牆這些斷線。而且邏輯層處理斷線可能也不是那麼好處理。一般,如果只是用於保活還是可以的。
心跳包一般來說都是在邏輯層發送空的包來實現的。下一個定時器,在一定時間間隔下發送一個空包給客戶端,然後客戶端反饋一個同樣的空包回來,伺服器如果在一定時間內收不到客戶端發送過來的反饋包,那就只有認定說掉線了。只需要send或者recv一下,如果結果為零,則為掉線。
但是,在長連接下,有可能很長一段時間都沒有數據往來。理論上說,這個連接是一直保持連接的,但是實際情況中,如果中間節點出現什麼故障是難以知道的。更要命的是,有的節點(防火牆)會自動把一定時間之內沒有數據交互的連接給斷掉。
6. c# c/s 之間如何做心跳檢測
用SOCKET,然後再看具體網路情況,決定是C端還是S端發起心跳包。
一般會是C端開始工作後主動連接S端,連接成功後每過指定的時間發一個包,包的內容可以很簡單,就一個0。而S端收到後再反一個包。這樣就完成了心跳過程,如果在超出的時間沒有接到客戶端的心跳包,伺服器則斷開客戶端連接,或者做其他操作
7. 伺服器搭建中,心跳線的作用
心跳線是用於連接A、B兩台伺服器間的網線。在這兩台伺服器A、B中,A為工作機,B為備份機,它們之間通過一根心跳線來連接。一般在伺服器上都配有兩塊網卡,其中一塊專門用於兩台伺服器(節點)間的通訊。安裝在伺服器上的軟體通過心跳線來實時監測對方的運行狀態。一旦正在工作的主機A因為各種硬體故障,如電源失效、主要部件失效或者啟動盤失效等導致系統發生故障,心跳線會反映給互為備份的另外一台主機,主機B可以立即投入工作。這樣可以在最大限度上保證網路的正常運行。這也稱為「心跳檢測」。心跳線主要利用一條RS-233檢測鏈路來完成,採用Ping方式檢測驗證系統Down機檢測的准確性。
8. 服務端主動發送心跳包,還是客戶端發送比較好
一般是用來判斷對方(設備,進程或其它網元)是否正常動行,一般採用定時發送簡單的通訊包,如果在指定時間段內未收到對方響應,則判斷對方已經當掉。用於檢測TCP的異常斷開。一般是用來判斷對方(設備,進程或其它網元)是否正常動行,一般採用定時發送簡單的通訊包,如果在指定時間段內未收到對方響應,則判斷對方已經當掉。用於檢測TCP的異常斷開。基本原因是伺服器端不能有效的判斷客戶端是否在線也就是說,伺服器無法區分客戶端是長時間在空閑,還是已經掉線的情況.所謂的心跳包就是客戶端定時發送簡單的信息給伺服器端告訴它我還在而已。代碼就是每隔幾分鍾發送一個固定信息給服務端,服務端收到後回復一個固定信息如果服務端幾分鍾內沒有收到客戶端信息則視客戶端斷開。比如有些通信軟體長時間不使用,要想知道它的狀態是在線還是離線就需要心跳包,定時發包收包。發包方:可以是客戶也可以是服務端,看哪邊實現方便合理。一般是客戶端。伺服器也可以定時輪詢發心跳下去。一般來說,出於效率的考慮,是由客戶端主動向伺服器端發包,而不是 就是在客戶端和伺服器間定時通知對方自己狀態的一個自己定義的命令字,按照一定的時間間隔發送,類似於心跳,所以叫做心跳包。 就是定時發送給對方一個數據包,告訴對方自己還在維護對話,同時獲得返回的數據,判斷對方是否在會話中。 客戶端每隔一段時間發一個包,使用TCP的,用send發,使用UDP的,用sendto發,伺服器收到後,就知道當前客戶端還處於「活著」的狀態,否則,如果隔一定時間未收到這樣的包,則伺服器認為客戶端已經斷開,進行相應的客戶端斷開邏輯處理。
9. asp.net怎樣實現心跳監測
1、伺服器端運行一個常駐線程,用於實時檢查在線列表中,是否存在超時用戶,有的話,就做相應處理,並將用戶從在線列表中刪除
2、用戶登陸成功後,在客戶端用JavaScript,使用定時器,每間隔固定時間(比如20秒),通過Ajax非同步發送請求伺服器某個頁面,或者WebService之類的介面。這就是所謂的心跳請求。
3、伺服器收到用戶的心跳請求後,更新用戶最後一次聯系伺服器的時間。
這樣伺服器檢查超時的時候,實際上就可以把當前時間,減去用戶最後一次聯系伺服器的時間,如果超過一個指定值,比如1分鍾,那就認為這個用戶離線了。
PS:原理很簡單,但要設計一個高效的機制,還是要多考慮實現的演算法,特別是伺服器端的在線列表,和檢查超時的機制。我曾經在幾年前做了一個實現,後來重寫了N遍,才發現了一個相對比較合理的方法。
10. 什麼是心跳機制
心跳包,通常是客戶端每隔一小段時間向伺服器發送的一個數據包,通知伺服器自己仍然在線,並傳輸一些可能有必要的數據。因按照一定的時間間隔發送,類似於心跳,所以叫做心跳包。事實上為了保持長連接,至於包的內容,是沒有特別規定的,不過一般都是很小的包,或者只是包含包頭的一個空包。
在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協議層「心跳包」數據。