2010-01-06 65 views
0

我有一個java程序通過xot協議連接到服務器。在Java中處理網絡超時

我使用的lib可以處理連接超時,但在發送& recv數據時沒有像setSoTimeout()這樣的方法來處理超時。

所以,任何人都可以建議我解決這個問題。

感謝

回答

0

一種選擇是生成一個線程來執行寫入操作和join(timeout)它。同樣從連接讀取。當超時到期時(與線程中斷相對),顯然終止線程(並將連接視爲處於不確定狀態)。

+0

好的,謝謝你的建議:) – QuanNH 2010-01-06 04:42:46

+0

如何在發送/接收超時時以安全的方式殺死線程? – QuanNH 2010-01-06 07:04:38

+0

也許我創建一個新的問題:D – QuanNH 2010-01-06 09:45:58

0

'Socket.setSoTimeout()'也應該適用於recv。請參閱其javadoc

公共無效setSoTimeout(INT超時)拋出SocketException

Enable/disable SO_TIMEOUT with the specified timeout, in milliseconds. 

隨着)該選項設置爲非零 超時,讀(請與此 套接字關聯將阻止 的InputStream只有這個數額 的時間。如果超時到期,則提出一個 java.net.SocketTimeoutException異常,即 ,儘管Socket仍然是 有效。在進入阻止 操作之前必須啓用該選項 才能生效。超時 必須> 0。超時爲零時,將 解釋爲無限超時。

+0

我的協議是xot(x25 over tcp/ip)&我使用這個協議的其他lib,沒有使用Java套接字(但類似:D) – QuanNH 2010-01-06 04:44:04