网络输入流在下面代码的版本1中正常工作,因为它继续从服务器接收数据消息。 但是,在版本2中,只收到第一条消息,然后没有。
为什么它不起作用?还有其他选择吗?
版本1
public void run(){
try {
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
int c;
while ((c = in.read()) != -1) {
System.out.print((char) c);
}
}catch (IOException e){
e.printStackTrace();
}
}
第2版
public void run(){
try {
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
while(true){
String msg = in.readLine();
System.out.println(msg);
}
}catch (IOException e){
e.printStackTrace();
}
}
答案 0 :(得分:0)
您的第二个版本无效,因为您没有检查流的结尾。 readLine()
此时返回null。它应该是:
while ((line = in.readLine()) != null)
{
// ...
}
...它只会在读取一行时返回一行,包括行终止符。如果你不发送行,则无法读取行。