0

我正在创建一个基于服务器/客户端架构的聊天应用程序。服务器和客户端之间的通信是基于 TCP 的套接字。在这个应用程序中,我正在创建不同的公共房间。任意数量的用户都可以加入任何公共房间。

现在,当公共房间中的用户说“XYZ”为房间发送消息时,我需要将该消息传递给“XYZ”公共房间中的所有人。

问题从这里开始。假设公共房间“XYZ”中有 1000 个用户,每当用户在这个房间发送消息时,我需要在 for 循环中的相应套接字描述符上一一发送此消息以让 999 人休息。

这是我知道的唯一方法,我认为这不是一个好方法,因为如果用户增加,它会严重影响系统的性能。

请通过建议我实现相同目标的有效方法来帮助我。

谢谢。

4

2 回答 2

2

根据我的知识,这是使用流套接字(即 TCP,我建议将其用于(可靠)聊天)的唯一方法。

多播和其他仅适用于 UDP 等。

这也是(其中包括冗余等)大型 IRC 网络具有多个服务器的原因。接收用户消息的服务器只需要分发给他自己的所有用户和网络中的所有服务器,然后再分发给他们的用户。这减少了单个服务器的负载。

于 2012-06-29T13:59:08.767 回答
0

使用 pub 订阅。客户端订阅聊天室,您只需将消息发布到单个实体 - 聊天室。

于 2012-06-29T14:01:36.203 回答