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 閱讀(4211) 評論(0)  編輯  收藏

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


          網站導航:
           
          主站蜘蛛池模板: 建平县| 鹤壁市| 剑阁县| 湟中县| 台江县| 崇仁县| 房山区| 南京市| 云阳县| 扎兰屯市| 香港 | 成安县| 连云港市| 娱乐| 赣州市| 金昌市| 松潘县| 清河县| 建宁县| 玉门市| 休宁县| 荥阳市| 涪陵区| 甘谷县| 宝坻区| 遵化市| 达孜县| 怀化市| 神池县| 怀安县| 新和县| 博白县| 确山县| 临泉县| 大石桥市| 富源县| 鄂尔多斯市| 武清区| 瑞金市| 苍梧县| 洪泽县|