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