[英]Java socket writeByte and newline
我有一个我似乎无法理解的问题。
如果我使用代码段:
DataOutputStream dataoutput = new DataOutputStream(Socket.getOutputStream());
dataoutput.writeBytes(diagnostics);
dataoutput.flush();
从服务器发送到客户端的output:diagnostics挂起,即使使用.flush()也无济于事。 只有关闭套接字才会释放数据包。
但是,如果我添加换行符:
dataoutput.writeBytes(diagnostics+"\n");
它完美地工作。 如果您复制代码,
dataoutput.writeBytes(diagnostics);
dataoutput.writeBytes(diagnostics);
您得到的输出与带有/ newline的输出相同,没有重复的数据。 为什么?
编辑:客户端。
incoming = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
response = incoming.readLine();
就像好家伙在评论中一样,您应该使用冲洗功能来强制将有效负载发送到流的目的地。 但是,如果这不起作用,我建议尝试以下方法:
DataOutputStream dataoutput = new DataOutputStream(System.out);
dataoutput.writeBytes(diagnostics);
dataoutput.flush();
因此,现在的目的地将是“本地”控制台。 并且流的源和目标之间没有远程连接,也许您可以尝试在“本地”正常运行(并专注于DataOutputStream行为),然后开始解决远程流处理过程。
希望不多,但希望能有所帮助!
问候!!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.