在java中有另一个像 BufferedReader 这样的对象来读取服务器收到的数据? 因为服务器发送没有换行符的字符串,并且客户端不打印任何字符串unvia服务器关闭连接表单Timeout(超时消息有换行符!),客户端打印所有消息后,服务器发送超时消息! 帮帮我谢谢!!
答案 0 :(得分:2)
请勿使用readLine()
方法读取换行符,但使用read()
方法读取char-by-char。
for (int c = 0; (c = reader.read()) > -1;) {
System.out.print((char) c);
}
答案 1 :(得分:2)
您要求使用其他课程,因此在这种情况下,请尝试Scanner。它通常用于基于模式或从输入推断出的类型来界定输入(例如,逐字节读取或逐个int读取,或其某种组合)。但是,您也可以将它用作通用“读者”,以涵盖您的用例。
答案 2 :(得分:1)
当您从服务器读取任何内容时,您必须严格遵循通信协议。例如,服务器可能是HTTP服务器或SMTP服务器,它可能在发送数据之前加密数据,某些数据可能以不同方式编码,等等。
所以你基本上应该问:我想要访问什么样的服务器?它是如何将字节发送给我的?还有其他人已经完成了解释字节的工作,以便我可以快速获取我真正想要的数据吗?
如果是HTTP服务器,则可以使用代码new URL("http://example.org/").openStream()
。然后你会得到一个字节流。如何将这些字节转换为字符,字符串和其他内容是另一项任务。
答案 3 :(得分:0)
你可以尝试
InputStream is = ... // from input
String text = IOUtils.toString(is);
将输入转换为文本,而不会没有换行符(它也会保留原始换行符)