我听说调用'socket.close()'会自动关闭它的流。
将:
public void close() {
try {
socket.close();
}catch(IOException e) { }
}
具有与以下相同的效果:
public void close() {
try {
outputstream.close();
inputstream.close();
socket.close();
}catch(IOException e) { }
}
如果您的目标是完全关闭套接字?
答案 0 :(得分:3)
关闭套接字也会关闭套接字InputStream
和OutputStream
:
http://docs.oracle.com/javase/7/docs/api/java/net/Socket.html#close()
答案 1 :(得分:1)
是的,关闭输入或输出流或套接字会关闭流和套接字。
但是你不应该关闭套接字,你应该关闭你输出流周围的最外面的OutputStream
或Writer
,这样它就会被刷新。只有你能做到这一点。套接字只能关闭它的输出流,而不是你周围的输出流。
答案 2 :(得分:0)
你应该这样做是因为你有一个缓冲的输出流。这将刷新尚未发送的任何数据。
否则,关闭套接字将关闭流,因此它是多余的。