简体   繁体   English

socket.close()会中断数据传输吗?

[英]Will socket.close() interrupt data transmission?

OutputStream out = socket.getOutputStream();
out.write(someData);
socket.close();

Will socket.close() cause the peer socket not to receive someData ? socket.close()会导致对等套接字不接收someData吗?

Will socket.close() cause the peer socket not to receive someData? socket.close()会导致对等套接字不接收someData吗?

Definitely not, in this case . 在这种情况下 ,绝对不是。 It will enqueue a FIN, which can only be received by the peer as end of stream after receiving all pending data. 它将排队一个FIN,该FIN只能在接收所有未决数据后作为流的末尾被对等方接收。

However as a general rule you should call out.close() , to ensure any data buffered in out gets flushed, in case out was a buffered stream, rather than socket.close() , which doesn't care about whatever buffered streams may have been wrapped around its output stream. 但是作为一般规则,您应该调用out.close() ,以确保out in的所有数据都被刷新,以防out是缓冲流,而不是socket.close() ,后者不关心任何缓冲流可能已包装在其输出流中。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM