加入收藏 | 设为首页 | 会员中心 | 我要投稿 莱芜站长网 (https://www.0634zz.com/)- 云连接、建站、智能边缘云、设备管理、大数据!
当前位置: 首页 > 编程开发 > Java > 正文

java – 套接字:BufferedReader readLine()块

发布时间:2020-07-09 06:55:48 所属栏目:Java 来源:互联网
导读:我使用BufferedReader.readLine()方法来读取远程服务器的响应(以C编写,我无法访问源代码). BufferedReader br = new BufferedReader(new InputStreamReader(in));String line;while((line = br.readLine())!=null){ [...]} 但它总是阻止在最后一行直到

我使用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’值的最后一个字符时,该行被读取,循环再次开始,等待下一行.

“最后一行”和其他行之间没有区别.

为了停止循环,您必须在某处手动关闭连接或等待超时.但是,没有关于您的通信协议的更多信息,这是不可能更准确的.

(编辑:莱芜站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读