谈我在做IM时候遇到的几个问题

jobsccnu 2006-04-24 10:28:20
我做IM时候,遇到以下几个问题,希望有朋友可以和我讨论一下:
开发环境:
后台:linux+cpp+mysql
前台:vc
1、点对点通讯的时候,如果完全用udp进行点对点,会存在nat穿透问题,
有时候可以成功,有时候不能成功,那么就需要用服务器转发,
这样就需要client和server时刻保持连接,这样耗费资源将非常大,
(linux内核会为每个连接保持20m的资源空间)
2、群消息
我采用组播机制,但是发现组播无法穿透网关,难道要我对每个用户逐一发吗?
另外,因为我的服务器属于被动响应,client可能处于私网内,server无法主动connect
client。
3、广播消息
我采用广播,那么路由器会阻止广播,难道我也要一个个发吗?
4、以上问题,不知道qq都是怎么实现的呢?
听说qq的群离线消息只发最近多少条,不知道是否有这回事。
希望有时间关心这个问题的朋友可以指导一下,谢谢。
...全文
399 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
MrPotter 2006-04-28
  • 打赏
  • 举报
回复
群聊就是服务器中转的
daironghua 2006-04-27
  • 打赏
  • 举报
回复
我也正在做IM,与LZ有相同问题:
1、UDP P2P 实现了,但得考虑不成功时Server转发;
2、多方会话 采用组播,在局域网内可以,但不能跨越路由,即无法跨域组播;
3、为什么要广播?如果组播能跨域,广播不需要的;
4、我也想知道QQ 的群聊是什么机制实现的??

是组播吗? 我查了资料,全球组播地址需要申请的,QQ 用组播实现多放会话也不像

期待高手解释一下
netsys2 2006-04-24
  • 打赏
  • 举报
回复
1、用服务器转发
----->不一定实时,可以减少维护量

2、群消息、广播消息
-----》应该服务器控制来发

4,387

社区成员

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

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