我们在读取输入流的数据的时候,如果没有数据的话,系统就会一直in.read()直到有数据,不然就阻塞在那里。在日常开发中,是绝对不允许这样的。
可以使用 socket.setSoTimeout(5000);缓解这个问题;
ServerSocket socket = new ServerSocket(m);// 获取客户端socket对象
Socket s = socket.accept();// 获取客户端socket输入流对象
//此方法只有放在in =s.getInputStream();之前才有效,一旦in.read()阻塞就会抛出异常,程序结束!
socket.setSoTimeout(5000);
InputStream in =s.getInputStream();