Java socket writeByte和换行符

时间:2014-04-23 14:02:36

标签: java sockets newline outputstream

我得到一个我似乎无法理解的问题。

如果我使用代码段:

DataOutputStream dataoutput = new DataOutputStream(Socket.getOutputStream());

dataoutput.writeBytes(diagnostics);
dataoutput.flush();

输出:从服务器发送到客户端的诊断挂起,即使使用.flush()也无济于事。只有关闭套接字才会释放数据包。

但是,如果我添加换行符:

dataoutput.writeBytes(diagnostics+"\n");

它完美无缺。如果你复制代码,

dataoutput.writeBytes(diagnostics);
dataoutput.writeBytes(diagnostics);

您获得与具有/ newline的输出相同的输出而没有重复数据。为什么呢?

编辑:客户端。

incoming = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
response = incoming.readLine();

1 个答案:

答案 0 :(得分:0)

与评论中的好小伙伴一样,您应该使用flush来强制将有效负载发送到流的目标。但如果那不起作用,我建议尝试以下方法:

    DataOutputStream dataoutput = new DataOutputStream(System.out);

    dataoutput.writeBytes(diagnostics);
    dataoutput.flush();

所以现在目的地将是"本地"安慰。并且流的源和目的地之间没有远程连接,如果有任何正常工作的话,你可以自己尝试一下#34;本地" (并专注于DataOutputStream行为),然后开始解决远程流媒体流程。

它不是很多,但希望它有所帮助!

问候!!