服務器端有檢測客戶端非正常斷線重連功能采用KeepAlive機制的程式案例。[face]monkey2:019.png[/face]
uj5u.com熱心網友回復:
這個玩意,你就正常寫。只要你的所謂心跳包沒有特殊意義的化,正常寫就好。(有些系統的心跳包有特殊意義)大多數情況我們說,只要你不迷信那些博大神的所謂高級文章,你正常處理就可以得到正常結果,反倒是天天看那些所謂高級文章,反倒是一堆“高級bug”
你這個只需正常寫,唯一需要處理的就是處理一下“SocketOption”引數,不需要那些博大神文章,還是那句話博大神們長期的行為都是選擇性單向推廣病
這些博大神們想推廣他們的博文,只會采用夸大,片面忽悠的方式,去推廣他們的玩意。同時他們會選擇性遺忘他們不想推廣的東西---------這是種病,必須治,不治的話,我們只能一遍一遍看到更大的基礎程式員去學他們那套到處“高級bug”的代碼方式
在option里有這么幾個引數
keepalive_time:單位秒,表示發送探測報文之前的鏈接空閑時間,默認為7200。
keepalive_intvl:單位秒,表示兩次探測報文發送的時間間隔,默認為75。
keepalive_probes:表示探測的次數,默認9次
也就是博大神們會選擇性遺忘,keealive本身就是tcp本身的機制,而他們推廣他們那套玩意的時候,會選擇性遺忘這個。他們會說如果tcp斷網,無法立刻收到例外,從而不能立刻選擇重連等操作
我們得告訴你,正是他們得選擇性遺忘病而導致如此,因為option得keepalive_time默認為7200秒,也就是默認空閑心跳檢查時間是2小時,所以他們無法立刻得到例外,所以想解決這個問題,只需簡單在你開啟sokect處理時刻,修改一下默認option即可
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/272719.html
標籤:C#
下一篇:多執行緒改變Ui界面
