我正在用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
或类似名称,以使读取更加容易:)