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

          Feedback

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

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

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

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

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

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

          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,以毫秒為單位。將此選項設(shè)為非零的超時值時,在與此 Socket 關(guān)聯(lián)的 InputStream 上調(diào)用 read() 將只阻塞此時間長度。如果超過超時值,將引發(fā) java.net.SocketTimeoutException,雖然 Socket 仍舊有效。選項必須在進(jìn)入阻塞操作前被啟用才能生效。超時值必須是 > 0 的數(shù)。超時值為 0 被解釋為無窮大超時值。

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

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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 广元市| 滁州市| 平塘县| 章丘市| 图们市| 澳门| 广平县| 礼泉县| 邵武市| 崇州市| 石家庄市| 海门市| 正阳县| 江陵县| 隆昌县| 六枝特区| 宁南县| 普兰店市| 铅山县| 开原市| 太湖县| 昌平区| 宜良县| 常州市| 于田县| 资源县| 海宁市| 金山区| 太白县| 平顶山市| 海淀区| 剑河县| 灵寿县| 周宁县| 奇台县| 大城县| 大足县| 乡城县| 边坝县| 喀喇沁旗| 肇源县|