2017-10-15 31 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(),不計較任何緩衝的流可能已經纏繞其輸出流。