Java:如何检查BufferedReder是否为空?(包含代码)

时间:2013-05-18 04:46:11

标签: java sockets bufferedreader

我正在为我的java网络考试练习一些东西,我似乎无法弄明白这一点。 我写了一个简单的服务器程序,假设向我的客户程序询问一个问题,然后等待来自客户端的回复,然后再继续处理答案。

继承了我的一些代码:

//Server:
BufferedReader in = new BufferedReader(
                    new InputStreamReader(clientSocket.getInputStream())
                    );
String answer1;
while(!in.ready()){    //wait till client replies
}
 answer1 = in.readLine();
//do something with answer1
//repeat for answer 2 and so on.....

上述循环不起作用,服务器只运行整个程序而不等待客户端的回复。 in.readLine()语句本身(没有while循环)也不会等待。

有没有简单的方法来检查BufferedReader是否为空或至少让程序等待回复?我知道我无法测试它是否为空,因为只要连接套接字,就不会是真的。

1 个答案:

答案 0 :(得分:2)

你不需要这个。只需调用readLine()即可。它将阻塞,直到数据到达。

  

如果我自己输入bufferedreader.readline(),我会得到空数据

不,不。你没有得到任何东西。该方法将阻塞,直到数据到达。

你在某处有一个根本的误解。