关于聊天室服务端的实现

wintergoes 2009-05-31 10:00:16
我在聊天室的服务端是用组播的方式给客户端发消息好,还是设置一个列表记录客户的socket,给每个客户端发送消息比较好?
还请各位大侠能够给详细讲解一下,或者找找相关的文章也可以。
...全文
279 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
shizhip 2009-06-09
  • 打赏
  • 举报
回复
internet还有很多路由器不支持组播的
DreamFreeLancer 2009-06-08
  • 打赏
  • 举报
回复
本人正在做一个开源实时通信项目,有兴趣者请光顾
烽驿2009开源实时通信平台 源码获取:https://fy2009.googlecode.com/svn/trunk/ fy2009
相关博克:http://blog.csdn.net/DreamFreeLancer
tianyou8 2009-06-04
  • 打赏
  • 举报
回复
组播没用过,不过我个人觉得其他方式肯定要采用一定的方式把客户端socket保存起来,数组,链表都可以,要看你各方面的综合要求了,之前我就是这样做.我还用select模型做过,里面提供套接字集合的管理,使用方便,性能也还可以,你可以参考下.
Alan_Pisces 2009-06-04
  • 打赏
  • 举报
回复
组播?现在Internet的所有路由器支持吗?
msdn2009_2010 2009-06-03
  • 打赏
  • 举报
回复
UP
xxbxiao 2009-06-03
  • 打赏
  • 举报
回复
服务器端由于要和多个客户通信,所以应该采用非阻塞的方式,如果用户数量比较多的话建议用完成端口模型
dong364 2009-06-03
  • 打赏
  • 举报
回复
干脆做成P2P应用, 不过要考虑的东东也就比较多了, NAT是少不了的, 这样可以大大减轻S端的负载, 当然做成传统的CS模式也可以, qq不就是吗, 但是如果是大规模的话, 肯定要考虑群集和分布式计算, 没那么简单了
liergood 2009-06-03
  • 打赏
  • 举报
回复
组播也不安全啊!遍历发送 可以用完成端口、i\o,也可以自己设计出来模式。怕阻塞用多个线程呗!
gametiger 2009-06-03
  • 打赏
  • 举报
回复
遍历发送消息啦,组播很多路由器不能实现。
etre 2009-06-03
  • 打赏
  • 举报
回复
遍历发送消息,比如用完成端口实现啦。
dengxuxing 2009-06-01
  • 打赏
  • 举报
回复
不是很同意楼上的说法,建议就用遍历发送消息。服务器端你不可能用阻塞方式,那有多个客户端时会有大问题的,一旦发生阻塞你怎么解决?肯定得用非阻塞方式。

要不还有什么方式?有客户端断开连接时要从链表中去掉该节点倒是要注意。



mfc168 2009-06-01
  • 打赏
  • 举报
回复
组播方式是怎样的?能不能介绍下?

遍历是不行的,我做过,给你简单举个例子说明:

for(int i=0;i<nSockNum;i++)
{
.....
send(sock[i], buf,buflen,0);
.....
}
for循环如果客户端很多的话,延迟很明显,阻塞方式send,如果存在一客户端断开连接,而你没检测到,就只能等超时后,你后面的循环才能继续
如果非阻塞方式,send容错很难处理
oyljerry 2009-06-01
  • 打赏
  • 举报
回复
保存客户端链表,然后遍历发送消息...
stuarts740 2009-06-01
  • 打赏
  • 举报
回复
学习,帮顶
wuhuwy 2009-06-01
  • 打赏
  • 举报
回复
用组播吧
只做过局域网的,没做过外网的,这个估计实现起来麻烦一些
Jurang 2009-05-31
  • 打赏
  • 举报
回复
两种方式都可以,但组播确实是方便很多。
sea_turtle 2009-05-31
  • 打赏
  • 举报
回复
两种方式都可以吧 组播 方便一些
wintergoes 2009-05-31
  • 打赏
  • 举报
回复
补充一下,是面向internet的聊天室,不是局域网中的

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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