公开,私下交谈在聊天室服务器是怎样实现的

koyl 2000-05-11 05:00:00
我在一个服务器程序的开发中,需将连接到服务器的客户,分成不同的组(组内客户数目不等),各组内进行不同的工作(如通过服务器转发数据)。有点类似于聊天室服务器要管理公开,私下交谈等。
是否要为每一个组创建一个线程和一个socket,这样如果线程创建的太多,管理起来很麻烦。
winsock2中有多点通信,不知有否帮助。
在C++ Builder中有没有控件可解决此问题。
我的程序实时性要求较高。
请各问赐教。谢谢
...全文
289 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
sztanj 2000-09-05
  • 打赏
  • 举报
回复
我曾经做过类似的聊天程序,把聊天用户做成TObject类,组名只是它的一个属性,还有一个socket属性,每当用户连接时(onconnect)都将它的socket赋给用户socket,这样只用做个循环就可以将信息发给你指定的任意类型的用户了。
while (条件)
{ 用户->socket->SendText("...") }
我用的Tserversocket 和 Tclientsocket
多线程要用阻塞方式(stThreadBlocking)。
tlc97 2000-09-04
  • 打赏
  • 举报
回复
TServerSockt->Socket->connections[int count]代表当前的所有连接,相当于
每个连接是一用户,每各连接可进行不同的处理;

{
for(i=0;i++;i<cur_count)
{ServerSocket->Socket->Connections[i]->SendText("这是公聊");}
}
//-----------
ServerSocket->Socket->Connections[10]->SendText("假设私聊对向是第10个连接");

duhorse 2000-07-08
  • 打赏
  • 举报
回复
c++builder企业版中有TServerSocket and TClientSocket可以实现,自带有例子。

4,356

社区成员

发帖
与我相关
我的任务
社区描述
通信技术相关讨论
社区管理员
  • 网络通信
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧