如果在Java中关闭套接字,是否需要关闭流?

时间:2014-03-11 21:28:38

标签: java sockets networking stream

我听说调用'socket.close()'会自动关闭它的流。

将:

public void close() {
     try {
          socket.close();
     }catch(IOException e) { }
}

具有与以下相同的效果:

public void close() {
     try {
          outputstream.close();
          inputstream.close();
          socket.close();
     }catch(IOException e) { }
}

如果您的目标是完全关闭套接字?

3 个答案:

答案 0 :(得分:3)

关闭套接字也会关闭套接字InputStreamOutputStream

http://docs.oracle.com/javase/7/docs/api/java/net/Socket.html#close()

答案 1 :(得分:1)

是的,关闭输入或输出流或套接字会关闭流和套接字。

但是你不应该关闭套接字,你应该关闭你输出流周围的最外面的OutputStreamWriter,这样它就会被刷新。只有你能做到这一点。套接字只能关闭它的输出流,而不是你周围的输出流。

答案 2 :(得分:0)

你应该这样做是因为你有一个缓冲的输出流。这将刷新尚未发送的任何数据。

否则,关闭套接字将关闭流,因此它是多余的。