Socket
Java的socket是一个全双工套接字,任何的输入流或输出流的close()都会造成Socket关闭。
解决办法:使用socket.shutdownOutput()方法关闭套接字的输出流,使服务器知道输出流关闭,可以得到流末尾标志(-1)。
同样,可以使用socket.shutdownInput()方法单独关闭套接字的输入流。
在客户端或者服务端通过socket.shutdownOutput()都是单向关闭的,即关闭客户端的输出流并不会关闭服务端的输出流,所以是一种单方向的关闭流;
通过socket.shutdownOutput()关闭输出流,但socket仍然是连接状态,连接并未关闭
如果直接关闭输入或者输出流,即:in.close()或者out.close(),会直接关闭socket