QQ群聊 的实现原理

vicky_jam 2006-02-21 06:40:05

首先不讨论TX有多少Server,多少集群.
讨论一下最简单,经济的实现方式.

为了方便大家描述我这里设群里面有10个用户:A,B,........,J 自己是用户A

如果说P2P的话,应该是A要说话A直接发送到其他用户.但是我简单抓了下包 发现我群聊的时候是发udp 包到219.133.60.32 的 没有其他的IP

这么说的话是服务器转发?

但是到底是TX的服务器转发,还是指定群里面的一个用户做server转发呢~?
如果TX做服务器进行转发,那我认为服务器的负担是很重的.

特此很郁闷~不知道 msn popo 之类的是怎么样的


我的想法是 服务器维护一个群聊的用户列表,负责P2P打洞, 用户直接P2P到用户.

但是这里面又存在一些问题,一个群200人,用户每发一次消息,就等于发送200条消息,这个似乎又有些不合理.

或者,一个群里面自动的指定几个网速快的用户做server 复杂群里面消息的转发.200个人的一个群.指定5个用户做转发数据,用户发数据的时候 直接发送到那5个人,然后由这5个人转发分配了的用户.

这个管理起来可能麻烦一点.

唉,想找个达人说说什么方式实现简单,方便,经济~:)
也请给点资料自己研究研究也行~:)

...全文
1408 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
漂流的代码 2006-02-22
  • 打赏
  • 举报
回复 1
很简单,群是一个特殊的QQ号。所有在群成员的发言都传送到这个号码。然后又群号码转发给其他人。这个号码是代表了一个服务程序
vc_asm 2006-02-22
  • 打赏
  • 举报
回复
一个服务器 能承受多少用户的udp中转~
-------------
这个我也想知道
xx_jj 2006-02-22
  • 打赏
  • 举报
回复
肯定是服务器转发
vicky_jam 2006-02-22
  • 打赏
  • 举报
回复
还有达人说话么~:)

如果是UDP转发那,不知道哪位大哥测试过,一个服务器 能承受多少用户的udp中转~
vc_asm 2006-02-22
  • 打赏
  • 举报
回复
关于p2p的应用,我正在着手做一个相关的项目,借贵地发一个,能给点意见就更好了
http://community.csdn.net/Expert/TopicView1.asp?id=4428750
vc_asm 2006-02-22
  • 打赏
  • 举报
回复
从对群收费的问题里,还有群发图片的限制等都可以看出来是中转的。另外上线时可收到离线群消息,即使是框架实现的可行性等都可以看出来
vc_asm 2006-02-22
  • 打赏
  • 举报
回复
应该是专门服务器中转,QQ有的是钱
vicky_jam 2006-02-22
  • 打赏
  • 举报
回复
up~
获取QQ好友列表√ 录张GIF感受一下UI 部分代码结构: 文件夹说明: 完成功能: QQ群官网登录√ 取Cookie√ 变量:全_cookiess 取QQ号√ 变量:全_superuin 取QQ skey√ 变量:全_skey 取QQ bkn√ 变量:全_bkn 取QQ头像√ 方法:Get_QQHEAD() QQ好友列表功能: 取QQ好友列表√ 方法:QQ好友_列表初始化() 取QQ好友昵称√ 变量:局_Name(列表初始化 方法内) 取QQ好友账号√ 变量:局_Uin(列表初始化 方法内) 取QQ好友头像√  方法:取好友QQ头像() QQ群列表功能: 取QQ群列表√ 方法:QQ群_列表初始化() 取QQ群名称√ 变量:局_Name(列表初始化 方法内) 取QQ群群号√ 变量:局_Uin(列表初始化 方法内) 取QQ群头像√  方法:取群QQ头像() 相关方法: Get_Friend_List()‘取QQ好友列表 创建自窗口句柄()‘创建QQ列表,QQ群列表句柄 QQ好友_列表初始化()‘获取QQ列表,QQ群数据 不足: 判断用户是否在线× (因为现在好像还没有可以判断手机用户在线状态的接口....我就没写判断是否电脑在线了...) QQ资料获取× QQ群列表无法显示× 开源这个程序主要是想各位帮忙看看源码.....其实获取QQ群列表的代码也写好了。 但是无法显示,调来调去也不知道是哪里的问题。 (列表生成是用同一套代码的,QQ列表可以生成但是QQ群列表无法生成。)
一共包括10个以上的天程序版本!绝对物有所值! 为感谢大家长期的支持,我将下载所需的资源分下调为2。网络天程序设计(可选)  实验要求 1、分析典型网络天应用软件(如QQ、MSN等)的实现原理,模拟设计一套网络天应用程序,必须实现以下功能: ①按照C/S结构分别设计服务端程序和客户端程序; ②服务端通过图形用户界面实现对服务器的控制,负责维护用户帐户和用户群,并维护用户信息、维持客户端之间的端对端通信和群通信、适时维护用户在线信息,并能够发送广播消息。 2、增加尽可能多的功能,用户界面友好,操作简便,代码设计遵从程序设计规范,易读性强,对关键过程和代码进行标注说明。 3、程序设计过程遵从软件工程规范,有需求分析、系统设计和详细设计过程,有相应的规范化说明文档。  实验提示 1、客户端之间的通信是通过服务器进行转发的,对于两个客户端,服务器需要创建两个套接字分别维持与客户端之间的连接。当客户端需要向另一个客户发送消息时,它首先将消息发送到服务器,由服务器根据目标用户帐户转发到目标主机。 2、群是采用多播技术实现的,也可以采用单播技术实现,但是服务器开销会增加。具体说来,若采用组播技术,当服务端收到来自一个客户端的消息后,向预先分配的该组组播地址转发该消息。若采用单播技术,服务端需要向该组内的所有客户端一一转发该消息。 3、广播消息通过广播方式发送由服务端创建的消息。 4、服务端根据客户的连接和断开情况,实时向其它客户端发送用户在线信息。 实验题目二:自选网络通信程序设计(可选)  实验要求 可以自选与网络通信相关的设计题目,要求如下: 1、在确定实验题目、设计内容以及设计功能指标要求后,向实验指导教师提交书面申请,由实验指导教师根据所选实验题目的难度和工作量确定立题后方能开始实验。 2、选择的实验题目必须具有一定综合性,并能够利用网络通信原理加以解决,同时需要具备一定的工作量。 3、设计的结果要求用户界面友好,操作简便,代码设计遵从程序设计规范,易读性强,对关键过程和代码进行标注说明。 4、程序设计过程遵从软件工程规范,有需求分析、系统设计和详细设计过程,有相应的规范化说明文档。 5、严禁抄袭别人成果,但可以部分借鉴。

18,356

社区成员

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

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