0

我正在用java编写一个客户端程序。服务器是用 C++ 编写的。当我从客户端向服务器发送消息时,一切正常。但是在接收我的客户线程期间,我的客户线程卡在了这个调用中

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

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

4

1 回答 1

7

你应该使用:

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

代替:

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

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

于 2013-07-11T19:50:43.510 回答