我有一个这样的程序,
Socket socket = serverSocket.accept();
InputStream in = socket.getInputStream();
OutputStream out = socket.getOutputStream();
...some read and write here...
socket.close;
代码工作正常。但是如果我关闭插座,我不确定输入/输出是否关闭。我也没有调用.flush((,数据将如何发送出去?
- 关闭套接字
- 不会刷新输出流,但会关闭流和套接字。 关闭
- 输入流不会刷新输出流,但会关闭流和套接字。 关闭输出流
- 会刷新输出流并关闭流和套接字。
您应该关闭从套接字获得的输出流最外层的输出流。例如:
BufferedOutputStream bos = new BufferedOutputStream(socket.getOutputStream());
DataOutputStream dos = new DataOutputStream(bos);
关闭"做"。这会刷新它,刷新"bos",并关闭所有内容。
关闭时刷新记录在 Javadoc for FilterOutputStream 中。
另一个答案:在Java中,当我调用OutputStream.close((时,我总是需要调用OutputStream.flush((吗?
说是的!如果您手动关闭它,它将被刷新