我使用BufferedReader.readLine()方法来读取远程服务器的响应(以C编写,我无法访问源代码).
BufferedReader br = new BufferedReader(new InputStreamReader(in)); String line; while((line = br.readLine())!=null){ [...] }
但它总是阻止在最后一行直到超时.所以我使用以下代码:
int b; while(true){ b = in.read; [...] }
我发现读取的最后一个字节的整数值为13,我认为这是一个回车,对吗?
那么为什么readLine方法阻塞?服务器通常发出信号流是否达到结束?谢谢.
解决方法
在网络连接的情况下,当套接字关闭时,流终止.
所以readLine()阻塞直到它接收到“行尾”或手动关闭连接是完全正常的.当你的readLine()接收到’13’值的最后一个字符时,该行被读取,循环再次开始,等待下一行.
“最后一行”和其他行之间没有区别.
为了停止循环,您必须在某处手动关闭连接或等待超时.但是,没有关于您的通信协议的更多信息,这是不可能更准确的.