0

我正在为我的 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 是否为空或至少让程序等待回复?我知道我也无法测试它是否为空,因为只要连接了套接字,那将不会是真的。

4

1 回答 1

2

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

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

不,你没有。你什么也得不到。该方法阻塞,直到数据到达。

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

于 2013-05-18T08:43:01.580 回答