问题描述:
    利用socket通信,实现接收数据的线程,需要设置超时的时间,在超时之后并且没有接收到数据,线程结束,不是一直阻塞着!
    请各位大虾帮忙一下,多谢!

解决方案 »

  1.   

    socket.setSoTimeout(); 设置socket 超时时间。用另一个线程时间戳方式是不行的。因为 socket.getInputString().read() 本身是block的。(如果是多客户端连接可以考虑nio)
      

  2.   

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