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