关闭套接字也会关闭/刷新输入/输出流

时间:2013-10-10 22:02:42

标签: java

我有一个这样的程序,

Socket socket = serverSocket.accept();
InputStream in = socket.getInputStream();
OutputStream out = socket.getOutputStream();

...some read and write here...

socket.close;

代码工作正常。但是,如果我关闭插座,我不确定输入/输出是否接近。另外我没有调用out.flush(),数据将如何发送出来?

2 个答案:

答案 0 :(得分:2)

  1. 关闭套接字不会刷新输出流,但会关闭流和套接字。
  2. 关闭输入流不会刷新输出流,但会关闭流和套接字。
  3. 关闭输出流会将其刷新并关闭流和套接字。
  4. 您应该关闭围绕从套接字获取的最外面的OutputStream。例如:

    BufferedOutputStream bos = new BufferedOutputStream(socket.getOutputStream());
    DataOutputStream dos = new DataOutputStream(bos);
    

    关闭'dos'。冲洗它,刷新'bos',然后关闭所有东西。

    关闭时刷新记录在FilterOutputStream的Javadoc中。

答案 1 :(得分:0)

另一个答案:In Java, when I call OutputStream.close() do I always need to call OutputStream.flush() before?

说是的!如果您手动关闭它将被刷新