我有一个这样的程序,
Socket socket = serverSocket.accept();
InputStream in = socket.getInputStream();
OutputStream out = socket.getOutputStream();
...some read and write here...
socket.close;
代码运行良好。但我不确定如果我关闭套接字,输入/输出是否关闭。而且我没有调用out.flush(),数据怎么发送出去?
最佳答案
- 关闭套接字不会刷新输出流,而是关闭流和套接字。
- 关闭输入流不会刷新输出流,但会关闭流和套接字。
- 关闭输出流会刷新它并关闭流和套接字。
您应该关闭包裹在从套接字获取的输出流周围的最外层输出流。例如:
BufferedOutputStream bos = new BufferedOutputStream(socket.getOutputStream());
DataOutputStream dos = new DataOutputStream(bos);
关闭“dos”。这会刷新它,刷新“bos”,然后关闭所有内容。
关闭时刷新记录在 FilterOutputStream 的 Javadoc 中。
关于java - 关闭套接字也会关闭/刷新输入/输出流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19307011/