处理Java中的网络超时

时间:2010-01-06 01:58:27

标签: java timeout

我有一个java程序通过xot协议连接到服务器。

我使用的lib可以处理连接超时,但是没有像setSoTimeout()这样的方法来处理发送时的超时。 recv数据。

所以,任何人都可以建议我解决这个问题。

感谢

2 个答案:

答案 0 :(得分:0)

一种选择是产生一个线程来进行写作并join(timeout)。同样从连接中读取。当超时到期时(与线程死亡相反),显然会终止线程(并将连接视为处于不确定状态)。

答案 1 :(得分:0)

'Socket.setSoTimeout()'也应该适用于recv。见其javadoc

  

public void setSoTimeout(int timeout)抛出SocketException

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

将此选项设置为非零   超时,对()的read()调用   与此相关的InputStream   套接字将仅阻止此数量   时间如果超时到期,a   java.net.SocketTimeoutException是   虽然Socket仍然存在但仍然提升了   有效。必须启用该选项   在进入阻止之前   操作有效。超时   必须是> 0.超时为零   被解释为无限超时。