我正在用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/