• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Prayer

            在一般中尋求卓越
            posts - 1256, comments - 190, trackbacks - 0, articles - 0
              C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

            如何探測socket是否保持SO_KEEPALIVE??

            Posted on 2009-02-03 11:06 Prayer 閱讀(4216) 評論(0)  編輯 收藏 引用 所屬分類: SOCKET
            一個客戶端通過交換機連接了多個服務器,如果一個服務器出了問題,客戶端如何快速知道那個連接已經斷開了?我嘗試使用了setsockopt,將socket設置為so_keepalive,雖然返回值顯示設置成功了,但并不起作用,請問有什么解決辦法??
            答:SO_KEEPALIVE是有周期的,當然不會因為SO_KEEPALIVE就能馬上檢測蛭斷開了。
            答:客戶端和服務器都面對這個問題當對方以外吊線,本地無法得知,這個問題的普遍方法是發送心跳信息,TCP是可靠的,發送心跳信息失敗表示連接已經斷開,覺得對的話給我點分
            答:心跳包是常用的方法~~~
            答:我用SO_KEEPALIVE等了十分鐘都沒反應,怎么調整周期?心跳包是什么東西,能否說的詳細些?
            答:所謂心跳包是客戶端和服務器之間進行的一種連接測試使用的數據包,是用戶自定義的一種數據,數據是封裝在TCP協議中作為數據凈核部分的,事實上是一種應用協議。內容可以為空,在包頭部分設置相應的字段,在服務器端收到數據包之后檢查包頭,包頭如果是心跳包類型,則說明該socket連接的客戶端在線,而客戶端則是定時發送這樣的數據包,例如1分鐘一次。可以設置服務器驗證心跳數據的超時時間為3分鐘,也就是說如果連續的3個心跳包服務器收不到,則判斷客戶端已經斷開!
            答:設置這些東西需要在連接之前,還是在連接之后,還是兩者皆可?
            答:這些設置是在程序設計的時候用的,事實上心跳包是程序員在設計程序的時候自己設置的,心跳包是ip數據包中的數據凈核部分,和普通的數據傳輸一樣,只是在傳輸到另一端時,需要接受端判斷數據類型,是需要處理的事務數據,還是心跳數據,這需要程序設計者在設計程序的時候對數據協議進行自定義設置,說穿了就是自己定義一套應用層的協議。簡單舉例:對于客戶端connect之后可以啟動一個定時器,定時為1分鐘,客戶端正常發送各種事務數據,定義數據格式¦數據頭¦數據長度¦數據內容¦當計時器到1分鐘時,客戶端向服務器發送一個數據長度為零,內容為空的數據,假定正常事務數據的數據頭為值為1~255,則可以定義心跳包數據頭的值為0,即發送一個¦0¦0¦¦這樣一個數據。當服務器收到客戶端連接之后也啟動一個計時器,這時可能有多個客戶端連接,需要輪詢各個連接的計時器,當計時器超過3分鐘,則判斷該連接斷開,對于有效連接,當它數據之后,解析數據,先讀數據頭,當數據頭值為1~255可以轉入相關的處理過程,當收到數據頭值為0的時候要將計時器歸0,重新計時。
            答:一個客戶端通過交換機連接了多個服務器,這種情況根據socket事件已經不大可靠了,尤其是大負荷服務器,比如msn,qq,skype等,通常斷開一分鐘以上才通知到,這就是采用心跳才檢測的。而且如果是UDP連接的話,也只能心跳檢測。方法如樓上說的,還可以簡化一下:每隔10秒(間隔時間可以自己設置)向服務器查詢一下,返回值正常就表示在線,設數器清0。如果沒有返回或返回值異常,計數加1。連接三次沒收到返回值就說明掉線了。
            答:上面方法有個問題要自己處理好:UDP是面向無連接的,所以收方要對數據進行排序,避免先處理后到的數據。
            久久国产乱子伦精品免费强| 99麻豆久久久国产精品免费| 看全色黄大色大片免费久久久| 婷婷久久综合九色综合九七| 精品久久久一二三区| 无码伊人66久久大杳蕉网站谷歌| 99久久99久久| 18禁黄久久久AAA片| 久久九九有精品国产23百花影院| 久久综合亚洲色HEZYO国产| 热re99久久精品国99热| 久久99久久成人免费播放| 热re99久久6国产精品免费| 久久精品亚洲福利| 99热成人精品热久久669| 一本综合久久国产二区| 99久久综合国产精品二区| 亚洲AV无码久久| 亚洲国产综合久久天堂 | 国产高潮久久免费观看| 狠狠色丁香久久婷婷综合图片| 久久精品草草草| 午夜精品久久久久久久| 久久免费看黄a级毛片| 久久久久亚洲精品男人的天堂| 久久福利青草精品资源站免费| 久久人妻AV中文字幕| 久久天天躁狠狠躁夜夜2020一| 久久精品中文字幕第23页| 99久久夜色精品国产网站| 国产精品久久久久国产A级| 无码国内精品久久人妻| 99久久精品免费看国产一区二区三区| 久久人人爽人人爽人人片AV东京热 | 久久国产成人精品国产成人亚洲| 久久精品国产一区二区| 国产91久久综合| 国产激情久久久久影院老熟女免费 | 国产高清美女一级a毛片久久w| 亚洲欧美成人久久综合中文网 | 欧洲国产伦久久久久久久|