readLine()方法问题

时间:2016-02-09 16:27:39

标签: java bufferedreader

我正在构建一个聊天系统,我需要等待获取用户输入(发送者)以及同时显示回复消息(来自接收者)。

所以我使用while循环来接收和发送消息:

while((text = inFromUser.readLine()) != null) //Msg from Sender
{
    while((data_from_server=inFromServer.readLine()) != null) //Msg from receiver
    {
        System.out.println("Displaying Output=" + data_from_server);
        System.out.println(data_from_server);
    }
    System.out.println("Getting Input=" + text);
    outToserver.writeBytes(text + "\n");
}

我的问题是客户端可能会一次又一次地发送输入,而接收方可能会/可能不会发送回复。但根据我的逻辑,它始终期待来自接收器和副Versa的输入。请建议解决此问题。

1 个答案:

答案 0 :(得分:3)

您需要多个帖子。想一想 - 你必须等到用户输入一些数据,当发生这种情况时,立即显示它。您还必须等到服务器为您提供一些数据,然后立即显示

你不能马上等待;如果你这样做,在用户和服务器输入一行之前不会显示任何内容。你不能等一个,然后另一个;如果你这样做,客户端无法读取他们写的内容,直到服务器发送消息,反之亦然。

您需要同时等待两个,但并排运行。您希望在其中任何一个返回某个内容时立即执行操作。这意味着您需要运行第二个线程。一个线程等待用户,一个线程等待服务器。