posts - 4, comments - 10, trackbacks - 0, articles - 2
          我現在做一個socket客戶端的接口,有這么一個問題。
          1,如果在30秒內接收到服務器端返回的消息,就認為是一次成功的連接。否則斷開此次連接
          2,采用短連接方式。即每次往服務器端發消息都建立一次連接
          3,每個發送請求最多允許3次連接。
          問題:怎樣判斷30秒內沒有接收到消息和收到消息時沒有超出30秒就斷開連接呢?
          ??????? 請給小弟一個思路吧。

          Feedback

          # re: 一個關于時間間隔的問題,請大俠們幫一下忙了。急!!!  回復  更多評論   

          2007-01-04 22:16 by jrobot[匿名]
          連接時可以設置接連超時,socket.connect(SocketAddress endpoint, int timeout) ;
          如果是讀取內容,也可以設置超時socket.setSoTimeout(int timeout);要在讀取內容前設置,jre 1.4以上都支持

          我想這樣可以解決你的問題吧,捕獲相應的異常做相應的處理就可以了,具體可以參考jdk的文檔

          # re: 一個關于時間間隔的問題,請大俠們幫一下忙了。急!!!  回復  更多評論   

          2007-01-05 16:00 by samfree
          多謝樓上給的提示,我按照你說的設置了socket.setSoTimeout(30000);得到了我的目的。看來我有必要多研究一下socket函數了哈哈

          # re: 一個關于時間間隔的問題,請大俠們幫一下忙了。急!!!  回復  更多評論   

          2011-11-25 11:43 by liangO
          java.net
          類 Socket
          java.lang.Object
          java.net.Socket
          直接已知子類:
          SSLSocket


          setSoTimeout
          public void setSoTimeout(int timeout)
          throws SocketException啟用/禁用帶有指定超時值的 SO_TIMEOUT,以毫秒為單位。將此選項設為非零的超時值時,在與此 Socket 關聯的 InputStream 上調用 read() 將只阻塞此時間長度。如果超過超時值,將引發 java.net.SocketTimeoutException,雖然 Socket 仍舊有效。選項必須在進入阻塞操作前被啟用才能生效。超時值必須是 > 0 的數。超時值為 0 被解釋為無窮大超時值。

          參數:
          timeout - 指定的以毫秒為單位的超時值。
          拋出:
          SocketException - 如果底層協議出現錯誤,例如 TCP 錯誤。
          從以下版本開始:
          JDK 1.1
          另請參見:
          getSoTimeout()

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


          網站導航:
           
          主站蜘蛛池模板: 杭锦后旗| 垫江县| 宁武县| 依兰县| 扎囊县| 伊春市| 南澳县| 西乌| 闽清县| 洛宁县| 扎囊县| 红桥区| 新和县| 繁峙县| 大同市| 宽甸| 泽普县| 兴宁市| 郑州市| 湖北省| 海安县| 九龙城区| 台安县| 乌兰察布市| 银川市| 雅江县| 新巴尔虎右旗| 乌海市| 天峨县| 高尔夫| 花垣县| 和顺县| 宁化县| 绵阳市| 永清县| 德州市| 大化| 静海县| 平顺县| 辉南县| 通化县|