neo*_*neo 12 java sockets bufferedreader java-io
我正在使用BufferedReader.readLine()方法从远程服务器读取响应(用C语言编写,我无法访问源代码).
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String line;
while((line = br.readLine())!=null){
[...]
}
Run Code Online (Sandbox Code Playgroud)
但它总是阻塞在最后一行,直到它超时.所以我使用了以下代码:
int b;
while(true){
b = in.read;
[...]
}
Run Code Online (Sandbox Code Playgroud)
我发现读取的最后一个字节的整数值为13,我认为这是一个回车,对吧?
那么为什么readLine方法会阻塞?服务器通常如何发出信号流结束信号?谢谢.
krt*_*tek 12
在网络连接的情况下,当套接字关闭时终止流.
因此,readLine()阻止它接收"行尾"或手动关闭连接是完全正常的.当您readLine()收到带有"13"值的最后一个字符时,将读取该行并再次开始循环,等待下一行.
"最后一行"与其他行没有区别.
要停止循环,必须手动关闭某处的连接或等待超时.但是如果没有关于您的通信协议的更多信息,就不可能更准确地了解这一点.
| 归档时间: |
|
| 查看次数: |
21305 次 |
| 最近记录: |