我有一个java程序通过xot协议连接到服务器。
我使用的lib可以处理连接超时,但是没有像setSoTimeout()这样的方法来处理发送时的超时。 recv数据。
所以,任何人都可以建议我解决这个问题。
感谢
权
答案 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.超时为零 被解释为无限超时。