我有个问题想问一些我不太明白的问题。
如果我使用代码片段:
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();发布于 2014-04-23 22:23:59
就像那些好家伙在注释中放的一样,你应该使用flush来强制将有效负载发送到流的目的地。但如果这不起作用,我建议尝试以下方法:
DataOutputStream dataoutput = new DataOutputStream(System.out);
dataoutput.writeBytes(diagnostics);
dataoutput.flush();因此,现在目的地将是“本地”控制台。并且流的源和目标之间没有远程连接,也许您可以自己尝试一下,看看“本地”是否正常工作(并专注于DataOutputStream行为),然后开始处理远程流过程。
这是不是太多了,但希望它能有一点帮助!
问候!!
https://stackoverflow.com/questions/23246735
复制相似问题