Java socket有两种timeout :
建立连接timeout,
读取数据timeout,
注意:如果想实现超时连接,需要采用一下方式进行socket连接
Socket socket = null;
socket=new Socket();
socket.connect(new InetSocketAddress("localhost", 8080),1000);
错误方式:
Socket s = new Socket(String host, String port);
建立连接timeout,
当不设置该参数时,指客户端请求和服务端建立tcp连接时,会一直阻塞直到连接建立成功,或抛异常。当设置了connectTimeout, 客户端请求和服务端建立连接时,阻塞时间超过connectTimeout时,就会抛出异常java.net.ConnectException: Connection timed out: connect。
读取数据so timeout
这个参数通过socket.setSoTimeout(int timeout)方法设置,可以看出它的意思是,socket关联的InputStream的read()方法会阻塞,直到超过设置的so timeout,就会