我有一个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