我在从客户端到服务器以及从服务器到其他客户端发送消息时遇到问题。请你帮个忙,告诉我一件事。问题是如果我做了一个输入(第46行),我可以从服务器(第51行)得到一个答案,然后继续这个循环。但是,例如,如果服务器必须通知用户轮到他了,我就不会收到消息,除非我尝试键入一些内容。
while ((userInput = stdIn.readLine()) != null) {
/* line 46 */ out.println(userInput);
if (userInput.equals("quit")) {
break;
}
/* line 51 */ lines = in.readLine();
System.out.println(lines);
System.out.println("input next command:");
}
1条答案
按热度按时间5rgfhyps1#
你必须创建一个单独的线程(至少我不知道怎么做),在那里你可以得到用户的输入,然后使用消息传递(只需搜索“消息传递java”)进行通信。服务器消息不会被输入阻止,您可以
tryReceive
(或在那条线上的名字)在频道上。在主线程中查询来自服务器的消息,然后从输入通道,稍微休眠并重复。当用户按enter键时,通道中会充满他的消息,主线程在经过时会接收该消息。