本篇文章給大家分享的是有關(guān)什么是心跳機(jī)制,小編覺(jué)得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說(shuō),跟著小編一起來(lái)看看吧。
創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司,提供網(wǎng)站設(shè)計(jì)制作、做網(wǎng)站,網(wǎng)頁(yè)設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);可快速的進(jìn)行網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,是專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!
心跳機(jī)制是定時(shí)發(fā)送一個(gè)自定義的心跳包,讓對(duì)方知道自己還活著,以確保連接的有效性的機(jī)制;所謂的心跳包就是客戶端定時(shí)發(fā)送簡(jiǎn)單的信息給服務(wù)器端告訴它我還在而已。
心跳機(jī)制是定時(shí)發(fā)送一個(gè)自定義的結(jié)構(gòu)體(心跳包),讓對(duì)方知道自己還活著,以確保連接的有效性的機(jī)制。
概念介紹
網(wǎng)絡(luò)中的接收和發(fā)送數(shù)據(jù)都是使用操作系統(tǒng)中的SOCKET進(jìn)行實(shí)現(xiàn)。但是如果此套接字已經(jīng)斷開(kāi),那發(fā)送數(shù)據(jù)和接收數(shù)據(jù)的時(shí)候就一定會(huì)有問(wèn)題。可是如何判斷這個(gè)套接字是否還可以使用呢?這個(gè)就需要在系統(tǒng)中創(chuàng)建心跳機(jī)制。其實(shí)TCP中已經(jīng)為我們實(shí)現(xiàn)了一個(gè)叫做心跳的機(jī)制。如果你設(shè)置了心跳,那TCP就會(huì)在一定的時(shí)間(比如你設(shè)置的是3秒鐘)內(nèi)發(fā)送你設(shè)置的次數(shù)的心跳(比如說(shuō)2次),并且此信息不會(huì)影響你自己定義的協(xié)議。所謂“心跳”就是定時(shí)發(fā)送一個(gè)自定義的結(jié)構(gòu)體(心跳包或心跳幀),讓對(duì)方知道自己“在線”。 以確保鏈接的有效性。
所謂的心跳包就是客戶端定時(shí)發(fā)送簡(jiǎn)單的信息給服務(wù)器端告訴它我還在而已。代碼就是每隔幾分鐘發(fā)送一個(gè)固定信息給服務(wù)端,服務(wù)端收到后回復(fù)一個(gè)固定信息如果服務(wù)端幾分鐘內(nèi)沒(méi)有收到客戶端信息則視客戶端斷開(kāi)。比如有些通信軟件長(zhǎng)時(shí)間不使用,要想知道它的狀態(tài)是在線還是離線就需要心跳包,定時(shí)發(fā)包收包。發(fā)包方:可以是客戶也可以是服務(wù)端,看哪邊實(shí)現(xiàn)方便合理。一般是客戶端。服務(wù)器也可以定時(shí)輪詢發(fā)心跳下去。心跳包之所以叫心跳包是因?yàn)椋核裥奶粯用扛艄潭〞r(shí)間發(fā)一次,以此來(lái)告訴服務(wù)器,這個(gè)客戶端還活著。事實(shí)上這是為了保持長(zhǎng)連接,至于這個(gè)包的內(nèi)容,是沒(méi)有什么特別規(guī)定的,不過(guò)一般都是很小的包,或者只包含包頭的一個(gè)空包。
在TCP的機(jī)制里面,本身是存在有心跳包的機(jī)制的,也就是TCP的選項(xiàng)。系統(tǒng)默認(rèn)是設(shè)置的是2小時(shí)的心跳頻率。但是它檢查不到機(jī)器斷電、網(wǎng)線拔出、防火墻這些斷線。而且邏輯層處理斷線可能也不是那么好處理。一般,如果只是用于?;钸€是可以的。心跳包一般來(lái)說(shuō)都是在邏輯層發(fā)送空的包來(lái)實(shí)現(xiàn)的。下一個(gè)定時(shí)器,在一定時(shí)間間隔下發(fā)送一個(gè)空包給客戶端,然后客戶端反饋一個(gè)同樣的空包回來(lái),服務(wù)器如果在一定時(shí)間內(nèi)收不到客戶端發(fā)送過(guò)來(lái)的反饋包,那就只有認(rèn)定說(shuō)掉線了。只需要send或者recv一下,如果結(jié)果為零,則為掉線。
但是,在長(zhǎng)連接下,有可能很長(zhǎng)一段時(shí)間都沒(méi)有數(shù)據(jù)往來(lái)。理論上說(shuō),這個(gè)連接是一直保持連接的,但是實(shí)際情況中,如果中間節(jié)點(diǎn)出現(xiàn)什么故障是難以知道的。更要命的是,有的節(jié)點(diǎn)(防火墻)會(huì)自動(dòng)把一定時(shí)間之內(nèi)沒(méi)有數(shù)據(jù)交互的連接給斷掉。在這個(gè)時(shí)候,就需要我們的心跳包了,用于維持長(zhǎng)連接,?;睢T讷@知了斷線之后,服務(wù)器邏輯可能需要做一些事情,比如斷線后的數(shù)據(jù)清理呀,重新連接呀當(dāng)然,這個(gè)自然是要由邏輯層根據(jù)需求去做了。總的來(lái)說(shuō),心跳包主要也就是用于長(zhǎng)連接的?;詈蛿嗑€處理。一般的應(yīng)用下,判定時(shí)間在30-40秒比較不錯(cuò)。如果實(shí)在要求高,那就在6-9秒。
以上就是什么是心跳機(jī)制,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見(jiàn)到或用到的。希望你能通過(guò)這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
網(wǎng)站欄目:什么是心跳機(jī)制
URL網(wǎng)址:http://jinyejixie.com/article32/pdcgsc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)公司、建站公司、網(wǎng)站設(shè)計(jì)、用戶體驗(yàn)、App設(shè)計(jì)、企業(yè)網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
移動(dòng)網(wǎng)站建設(shè)知識(shí)