我使用DataOutputStream
在網絡上這樣的傳輸數據:等待套接字數據傳輸
Socket socket = new Socket(ipAddress, port);
DataOutputStream dataOutputStream = new DataOutputStream(
socket.getOutputStream());
dataOutputStream.writeBytes("Stackoverflow");
// ...
System.exit(0);
如果我的應用程序終止太早,傳輸將被中止,因此失敗,因爲不是所有的數據都有在那時已經發送。
爲了解決這個問題,我可以手動等待一段時間終止前:
try
{
Thread.sleep(1000);
} catch (InterruptedException e)
{
e.printStackTrace();
}
然而,這種解決方案是壞的。在終止我的應用程序之前,是否有一些確保所有數據已經發送的「最佳實踐」方法?
編輯:
我無權訪問服務器代碼。
在網絡代碼中添加睡眠並不能完成任何操作。只要您正確關閉插座,數據就會到達。你確定問題不在另一端嗎? – EJP
問題可能確實存在於另一端,但仍可能有解決此問題的方法。 – BullyWiiPlaza