卡在getInputStream方法中

Ami*_*ira 0 java

我正在用java编写一个客户端程序.服务器是用C++编写的.当我从客户端向服务器发送消息时,它很好.但在接收我的客户端线程时卡在此调用中

in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
Run Code Online (Sandbox Code Playgroud)

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

m4t*_*4tx 7

你应该使用:

in = new InputStreamReader(socket.getInputStream());
Run Code Online (Sandbox Code Playgroud)

代替:

in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
Run Code Online (Sandbox Code Playgroud)

BufferedReader通常用于非网络IO(例如文件IO)和纯文本,其中行以换行符结束.如果你正在处理网络和二进制数据(你似乎也这样做)你应该使用普通的InputStreamReader你也可以使用一些DataInputStream或类似的东西来简化阅读:)