聊天:向服务器上的所有客户端发送消息

时间:2016-04-03 20:46:08

标签: java multithreading sockets server chat

我有一个服务器 - 客户端应用程序集。 (家庭作业)

到目前为止,我已经找到了如何让多个客户端连接到服务器并让服务器聚合客户端发送的消息,以及让服务器将客户端的消息发送回客户端并显示它在聊天窗格中。

我的问题是尝试向多个客户端发送消息。 我只允许使用ServerSocket和Socket库。

假设我有2个客户端连接到服务器。一个客户端发送消息,该消息显示在客户端的聊天中。第二个客户端发送消息,第一个客户端不接收消息,第二个客户端的聊天窗口显示第一个客户端的消息。

本质上,服务器正在发送相应客户端未在聊天框中显示的最新消息,我不知道为什么或如何。

服务器到客户端通信的代码:

{{1}}

我知道我在覆盖" out"但我不认为这是我的问题所以在我测试的时候它就在我的代码中。

我的问题已在上面的代码中标出。向量准确地存储套接字ID,因为我正在基于向量创建新的PrinterWriter,我只假设它将获得相应客户端的输出字段,但事实并非如此。

我的直觉是线程或关闭输出是一个问题,但老实说我不知道​​。

任何建议都表示赞赏。

1 个答案:

答案 0 :(得分:1)

在我看来,你的问题是你想在同一个地方对客户端套接字进行输入和输出工作,而且没有必要这样做。客户端套接字的输出流可以在GUI线程中写入,并且都在一个地方。如果需要,您可以保留输出流的集合,并且当您想要回复所有时,遍历集合(可能是HashMap<String, OutpuStream>,其中String是某个客户端标识符)并发送消息。