2017-10-15 26 views
1
OutputStream out = socket.getOutputStream(); 
out.write(someData); 
socket.close(); 

socket.close()导致对等套接字不接收someData请问socket.close()中断数据传输?

+0

在问之前你读过javadoc吗? – rkosegi

+0

调用'close()'之前使用[Socket#shutdownOutput()](http://download.java.net/java/jdk9/docs/api/java/net/Socket.html#shutdownOutput--) – AJNeufeld

+0

当然连接丢失。如果您想在关闭套接字后传输任何数据,则必须创建新的套接字。 – Kishor

回答

2

请问socket.close()会导致对等套接字不能接收someData?

当然不是,在这种情况下是。它将排队一个FIN,在接收到所有待处理数据之后,该FIN只能作为流的结束被对等端接收。

但是,你应该叫out.close(),以确保out缓冲的任何数据被刷新一般规则,以防out是一个缓冲流,而不是socket.close(),不计较任何缓冲的流可能已经缠绕其输出流。