我有一個Java客戶端發送UTF-8字符串到C#TCP服務器,我使用DataOutputStream發送字符串。代碼如下所示:DataOutputStream不沖洗
public void sendUTF8String(String ar) {
if (socket.isConnected()) {
try {
dataOutputStream.write(ar.getBytes(Charset.forName("UTF-8")));
dataOutputStream.flush();
} catch (IOException e) {
handleException(e);
}
}
}
問題是flush看起來沒有正常工作。如果我發送兩個相互靠近的字符串,服務器將只收到一個包含兩個字符串的消息。如果我在兩次調用之間執行Thread.sleep(1000),整個事情就會起作用,這顯然不是解決方案。 我錯過了什麼?
我開始迴應太多,但它只能補充說,在接收端的緩存會弄亂任何沖洗你即使你能夠可靠地衝洗,也可以在客戶端做到(一般情況下你可以)。但是不管你在客戶端做了什麼,服務器仍然會緩衝它的套接字數據。 – PSpeed 2009-12-05 13:51:27