日期:2014-05-20  浏览次数:20790 次

紧急求助:JAVA中TCP的SOCKET通信超时处理
问题描述:
  偶现在实现一个SCKET通信CLIENT端,用线程实现的,要求设置一定的超时时间,如果时间超时,那么就不再等待服务器端传输的数据,直接结束SOCKET。
  不知道怎么实现?请各位大虾指点一二!
  不胜感激!!

------解决方案--------------------
socket.setSoTimeout();
------解决方案--------------------
setSoTimeout
public void setSoTimeout(int timeout)
throws SocketException启用/禁用带有指定超时值的 SO_TIMEOUT,以毫秒为单位。将此选项设为非零的超时值时,在与此 Socket 关联的 InputStream 上调用 read() 将只阻塞此时间长度。如果超过超时值,将引发 java.net.SocketTimeoutException,虽然 Socket 仍旧有效。选项必须在进入阻塞操作前被启用才能生效。超时值必须是 > 0 的数。超时值为 0 被解释为无穷大超时值。 

超时后你在捕捉异常时就可以直接结束SOCKET。