代码:
Socket socket;
InputStream is = socket.getInputStream();
int len = is.read(buffer);
在别处调用socket。Close后接收函数仍然阻塞,并不返回。服务端发来数据后,甚至仍然能够读出正确的数据,而之后才因为错误,说socket已经是null。
Socket socket;
InputStream is = socket.getInputStream();
int len = is.read(buffer);
在别处调用socket。Close后接收函数仍然阻塞,并不返回。服务端发来数据后,甚至仍然能够读出正确的数据,而之后才因为错误,说socket已经是null。
不是可以在
socket.Close前试试执行 socket.shutdownInput(); socket.shutdownOutput();
socket.getInputStream().close();
都会引起socket关闭,shutdownInput关闭输入流但不引起socket关闭.至于socket关闭为什么要保留输入输出流 这个可能跟回收机制有关,socket关闭了只是没被系统回收,等回收后会自动关闭。