【发布时间】:2012-06-29 13:54:57
【问题描述】:
我正在创建一个基于服务器/客户端架构的聊天应用程序。服务器和客户端之间的通信是基于 TCP 的套接字。在这个应用程序中,我正在创建不同的公共房间。任何数量的用户都可以加入任何公共房间。
现在,当公共房间中的用户说“XYZ”为房间发送消息时,我需要将该消息传递给“XYZ”公共房间中的所有人。
问题从这里开始。假设公共房间“XYZ”中有 1000 个用户,每当用户在这个房间发送消息时,我需要在 for 循环中对应的套接字描述符上一一发送此消息以休息 999 人。
这是我知道的唯一方法,我认为这不是一个好方法,因为如果用户增加,它会严重影响系统的性能。
请通过建议我实现相同目标的有效方法来帮助我。
谢谢。
【问题讨论】:
-
TCP 就是这样工作的。您可以尝试使用广播地址的 UDP,但我认为仅此而已。
-
你看过现有系统(例如 irc)是如何做到的吗?
-
你为什么要这样做?如果您这样做是为了实际使用,请考虑使用现成的解决方案。如果您将此作为练习,您可能希望使用类似 redis 的东西来实现很多核心功能,至少在您用自己的东西替换它之前。
标签: c++ algorithm architecture client-server