java - 陷入 getInputStream 方法中

标签 java

我正在用java编写一个客户端程序。服务器是用C++编写的。当我从以下位置发送消息时 客户端到服务器就可以了。但是在接收过程中我的客户端线程陷入了这个调用

in = new BufferedReader(new InputStreamReader(socket.getInputStream()));

当我断开连接时,所有收到的数据都会被打印。我从这个场景中得到的是 getInputStream() 没有得到终止字符(我不知道它应该是什么),就像在 c 中它是空字符。因此,请告诉我应该在服务器端的消息末尾附加什么来恢复此问题。

最佳答案

您应该使用:

in = new InputStreamReader(socket.getInputStream());

而不是:

in = new BufferedReader(new InputStreamReader(socket.getInputStream()));

BufferedReader 通常准备用于非网络 IO(例如文件 IO)和以换行符结尾的纯文本。如果您正在使用网络和二进制数据(看起来您确实这样做),您应该只使用普通的 InputStreamReader 您也可以使用一些 DataInputStream 或类似的东西来使阅读更容易: )

关于java - 陷入 getInputStream 方法中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17601714/

相关文章:

java - java 运算符如何工作?

java - 使用 RowFilter (regexFilter) 匹配括号

java - 类中的 "store"对象是什么意思?

java - 关于调用方法时添加两个数组变量

java - 编程练习规范

java - eclipse ide中的entityName_无法解析为变量,错误消息?

java - 更新sql时MYSQL锁等待超时超出错误

java - 将java字符串转换为json对象

java - 使用 Groovy 中的 FileWriter 拼图

java - mongodb + java + iso 日期搜索