我正在用java编写客户端程序。服务器是用C ++编写的。当我发送消息时 客户端到服务器没问题。但在接收我的客户端线程时,卡在此调用中
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
当我断开连接时,所有收到的数据都会打印出来。我从这个场景中得到的是getInputStream()没有获得终止字符(我不知道它应该是什么),就像它的空字符一样。所以请告诉我,我应该在服务器端的消息末尾添加什么来恢复此问题。
答案 0 :(得分:7)
您应该使用:
in = new InputStreamReader(socket.getInputStream());
而不是:
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
BufferedReader
通常用于非网络IO(例如文件IO)和纯文本,其中行以换行符结束。如果你正在处理网络和二进制数据(你似乎也这样做),你应该使用普通的InputStreamReader
你也可以使用一些DataInputStream
或类似的东西来简化阅读:)