readLine() 方法的问题

Issue with readLine() method

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

所以我使用 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");
}

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

您将需要不止一个线程。想一想 - 你必须等到用户输入一些数据,当这种情况发生时,立即显示它。你也得等到服务器给你一些数据,然后立即显示that

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

您需要同时等待,但运行并排。您想在其中任何一个 return 时立即执行操作。这意味着您需要 运行 第二个线程。一个线程等待用户,一个线程等待服务器。