1

在java中还有另一个像BufferedReader这样的对象来读取服务器接收的数据??因为服务器发送一个没有换行符的字符串,并且客户端在服务器关闭连接表单超时之前不打印任何字符串(超时消息有换行符!),在客户端打印所有收到的消息和服务器发送的超时消息之后!帮帮我谢谢!!

4

4 回答 4

2

您要求使用另一个类,因此在这种情况下,请尝试使用Scanner。它通常用于根据模式或根据输入推断的类型来分隔输入(例如,逐字节读取或逐整数读取,或它们的某种组合)。但是,您也可以在此处将其仅用作通用“阅读器”,以涵盖您的用例。

于 2011-01-15T13:21:31.263 回答
2

只是不要使用readLine()方法按换行符读取,而是使用方法逐字符读取read()

for (int c = 0; (c = reader.read()) > -1;) {
    System.out.print((char) c);
}
于 2011-01-15T12:40:10.983 回答
1

当您从服务器读取任何内容时,您必须严格遵守通信协议。例如,服务器可能是 HTTP 服务器或 SMTP 服务器,它可能会在发送数据之前对其进行加密,某些数据可能会以不同的方式编码,等等。

所以你基本上应该问:我想访问什么样的服务器?它如何将字节发送给我?其他人是否已经完成了解释字节的工作,以便我可以快速获取我真正想要的数据?

如果是 HTTP 服务器,可以使用代码new URL("http://example.org/").openStream()。然后你会得到一个字节流。如何将这些字节转换为字符、字符串和其他内容是另一项任务。

于 2011-01-15T12:23:23.053 回答
0

你可以试试

InputStream is = ... // from input
String text = IOUtils.toString(is);

将输入转换为文本,没有换行符(它也保留原始换行符)

于 2011-01-15T16:19:14.710 回答