繁体   English   中英

Java套接字writeByte和换行符

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM