【发布时间】:2014-03-29 17:50:13
【问题描述】:
PrintWriter out = new PrintWriter(DoDSocket.getOutputStream(), true);
BufferedReader in = new BufferedReader(new InputStreamReader(DoDSocket.getInputStream()));
BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));
String fromServer;
String fromUser;
while ((fromServer = in.readLine()) != null)
{
System.out.println(fromServer);
if ((fromUser= stdIn.readLine()) != null)
{
//System.out.println(fromUser);
out.println(fromUser);
}
}
在此客户端代码中,我创建了一个打印写入器和一个与服务器通信的缓冲读取器,我还有一个单独的读取器,它从命令行读取 System.in。
我目前的问题是,如果服务器向客户端发送多行字符串,我将不得不按 Enter 接收每一行。如何编辑此代码,以便在检查用户键入的内容之前从服务器的缓冲读取器打印每一行,而不是在每一行之后检查?
【问题讨论】:
-
您需要将循环检查来自服务器的消息与检查用户输入的
if语句分开。 -
您能说得更具体些吗?如果我取出 if 语句,第一个循环永远不会结束。
-
不,它不会,它会在
in.readLine()==null时结束 -
当我运行它时,它永远不会退出第一个循环,因为它没有从客户端发送任何内容。
标签: java bufferedreader