我正在为我的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是否为空或至少让程序等待回复?我知道我无法测试它是否为空,因为只要连接套接字,就不会是真的。
答案 0 :(得分:2)
你不需要这个。只需调用readLine()即可。它将阻塞,直到数据到达。
如果我自己输入bufferedreader.readline(),我会得到空数据
不,不。你没有得到任何东西。该方法将阻塞,直到数据到达。
你在某处有一个根本的误解。