<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 45, 文章 - 6, 評論 - 4, 引用 - 0
    數據加載中……

    socket心跳檢測

    一、什么是心跳檢測

    判斷對方(設備,進程或其它網元)是否正常動行,一般采用定時發送簡單的通訊包,如果在指定時間段內未收到對方響應,則判斷對方已經當掉。用于檢測TCP的異常斷開。

    基本原因是服務器端不能有效的判斷客戶端是否在線也就是說,服務器無法區分客戶端是長時間在空閑,還是已經掉線的情況。所謂的心跳包就是客戶端定時發送簡單的信息給服務器端告訴它我還在而已。

    代碼就是每隔幾分鐘發送一個固定信息給服務端,服務端收到后回復一個固定信息。如果服務端幾分鐘內沒有收到客戶端信息則視客戶端斷開。比如有些通信軟件長時間不使用,要想知道它的狀態是在線還是離線就需要心跳包,定時發包收包。

    發包方可以是客戶也可以是服務端,看哪邊實現方便合理。一般是客戶端。服務器也可以定時輪詢發心跳下去。

    一般來說,出于效率的考慮,是由客戶端主動向服務器端發包,而不是相反。

    二、關于Send函數的返回值

    我們知道當客戶端以優雅的方式斷開TCP連接后,服務器使用Send函數發包,得到的返回值為0(說明TCP連接已斷開)。然而,SEND函數的成功返回只能表示發送數據已經進入了SOCKET內核的發送隊列,不一定就已經在線上或者已經被成功接收了。這可能是因為send只是往發送緩沖區拷貝數據, 剛開始緩沖區還未滿,所以不會有錯誤發生, 只有等到相當一段長的時間后, send的返回值才會為-1。

    三、定時Ping

    如果服務器不能進行心跳檢測的應答。可以采用定時Ping某服務器來檢測TCP連接是否斷開,如新浪(必須允許Ping的服務器)。PING是向遠程主機發送一個ICMP包,如果給定時間內沒有接收到回應就認為是超時,如果收到回應則分析接收到的ICMP包,得到TTL、類型以及用時。

    不過Ping包有32字節,如果是無線連接,有時需要考慮流量問題。

    四、使用TCP存活定時器

    posted on 2010-02-17 13:11 liyang 閱讀(7954) 評論(0)  編輯  收藏 所屬分類: 網絡

    主站蜘蛛池模板: 国产性生大片免费观看性| 老司机免费午夜精品视频| 免费国产99久久久香蕉| 免费一级毛片在线观看| 亚洲精品乱码久久久久久蜜桃图片| 亚洲免费在线视频| 亚洲日本在线看片| 无码av免费一区二区三区试看| 亚洲av日韩av高潮潮喷无码| 久久国产精品2020免费m3u8| 香蕉蕉亚亚洲aav综合| 精品无码AV无码免费专区| 亚洲三级在线播放| 无码少妇一区二区浪潮免费| 亚洲国产综合AV在线观看| 免费一级毛片不卡不收费| 精品久久久久久亚洲综合网| 日本a级片免费看| jizz免费观看视频| 亚洲不卡av不卡一区二区| 国产精品99久久免费观看| 亚洲理论片中文字幕电影| 最新猫咪www免费人成| 亚洲AV网一区二区三区| 亚洲中文字幕视频国产| **实干一级毛片aa免费| 91丁香亚洲综合社区| 亚洲av手机在线观看| a级毛片在线免费| 亚洲最大的黄色网| 全部免费毛片免费播放| 18禁超污无遮挡无码免费网站 | 久久久久久曰本AV免费免费| 亚洲精品亚洲人成在线播放| 免费看国产一级特黄aa大片| 99在线热播精品免费99热| 亚洲性无码av在线| 亚洲精品国产高清不卡在线| 91免费福利精品国产| 国产91成人精品亚洲精品| 亚洲成a人片在线观看无码专区 |