我得到一个我似乎无法理解的问题。
如果我使用代码段:
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();
答案 0 :(得分:0)
与评论中的好小伙伴一样,您应该使用flush来强制将有效负载发送到流的目标。但如果那不起作用,我建议尝试以下方法:
DataOutputStream dataoutput = new DataOutputStream(System.out);
dataoutput.writeBytes(diagnostics);
dataoutput.flush();
所以现在目的地将是"本地"安慰。并且流的源和目的地之间没有远程连接,如果有任何正常工作的话,你可以自己尝试一下#34;本地" (并专注于DataOutputStream行为),然后开始解决远程流媒体流程。
它不是很多,但希望它有所帮助!
问候!!