我正在构建一个聊天系统,我需要等待获取用户输入(发送者)以及同时显示回复消息(来自接收者)。
所以我使用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的输入。请建议解决此问题。
答案 0 :(得分:3)
您需要多个帖子。想一想 - 你必须等到用户输入一些数据,当发生这种情况时,立即显示它。您还必须等到服务器为您提供一些数据,然后立即显示 。
你不能马上等待;如果你这样做,在用户和服务器输入一行之前不会显示任何内容。你不能等一个,然后另一个;如果你这样做,客户端无法读取他们写的内容,直到服务器发送消息,反之亦然。
您需要同时等待两个,但并排运行。您希望在其中任何一个返回某个内容时立即执行操作。这意味着您需要运行第二个线程。一个线程等待用户,一个线程等待服务器。