您将需要对客户端和服务器进行多线程处理。客户端将需要一个线程来侦听来自服务器的消息并将其写入到他/她的屏幕,以及一个线程来等待他/她的键盘输入并将其发送到服务器。同样,对于与服务器的每个连接,它将需要一个线程来等待客户端的输入,并需要一个线程将其他用户的输出发送给客户端。
您直到按回车键才看到传入消息的原因是由于客户端while循环。现在已被注释掉,但是您的循环似乎曾经用于:
-从服务器读取传入消息
-从键盘读取输入
-将输入发送到服务器
因此,您从服务器读取了所有可用内容,然后客户端等待更多键盘输入,然后再次从服务器读取(在下一次迭代中)。
根据我的理解,另一个建议是创建JAXBContext可能是一项昂贵的操作。您无需在每次发送消息时都重新创建它。考虑在服务器和客户端中初始化一个,然后在每个编组/解组中重用它。



