amp@java

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            99 隨筆 :: 0 文章 :: 228 評論 :: 0 Trackbacks

          需要一個能夠持續連接多個服務器的代理程序,但它所連接的服務器不太穩定,有時候會關機,為了讓代理程序能夠在連接斷開后自動重新連接,需要一個循環,當Socket異常時自動重新連接。
          需要解決幾個問題:
          1、當手動停止代理程序時不應該再自動重連。
          2、當連續多次連接均失敗,可能是服務器已關機,不應該再不斷重復下去,要休息一段時間再連。
          3、如果連接成功后持續一定的時間不用再重連,就不叫“連續連接”。

          解決方法:
          1、設置一個while循環,判斷條件為是否已經設置手動停止標志,若是,則不再循環,退出監聽線程。
          2、設置一個連接計數,當連接次數達到某個數目時,讓線程休息一段時間,同時應該把連接次數清零。
          3、設置一個定時器,設定它在一定的時間之后把連接計數器清零,每次開始連接時把上次的定時器取消掉,并建立一個新的定時器。這樣一來,假如兩次連接的間隔小于定時時間,則上次的定時器還沒開始執行清零任務就已經被取消掉,連接計數器能夠正常進行;假如某次連接成功了,也就是說連接的持續時間已經超過了定時時間,則定時器的任務得以執行,計數器清零,下次重連的時候會從零開始計數。

          posted on 2006-02-25 15:33 amp@java 閱讀(4210) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 许昌县| 乌兰察布市| 原阳县| 东乌| 凤山市| 安岳县| 介休市| 乐山市| 裕民县| 临江市| 德清县| 宁津县| 井研县| 静宁县| 大洼县| 栾城县| 威宁| 墨竹工卡县| 轮台县| 松潘县| 桃源县| 大余县| 突泉县| 布尔津县| 哈尔滨市| 普陀区| 涿州市| 象州县| 巴彦淖尔市| 油尖旺区| 芜湖市| 水富县| 屯留县| 信宜市| 扎赉特旗| 红安县| 阳江市| 织金县| 时尚| 梨树县| 河曲县|