QQ的工作原理是怎么样的?它是怎么样支持那么多用户同时登陆的?它的后台服务器是怎么设置的?是不是每个用户登陆的时候都要先登陆到服务器啊?那和某个好友聊天的时候是不是就换成点对点的了?怎么转换的?它用的是Socket技术吗?还有别的网络技术吗?它是怎么实现发送离线消息的?怎么实现群发消息的呢?我是菜鸟 问题很多!请各位见谅,希望高手指点一二!
解决方案 »
- 如何在一个combobox下拉条中用sql语句显示数据库中用户名的所有内容
- DLL 不能修改在 BPL 中的全局变量吗?
- 请问各位老师位,在DELPHI的TREEVIEW中,取当前节点的父节点的父节点名字,咋取?
- 求sql语句
- 在用OleContainer1打开excel 时,如何自动打开excel ,用要每次程序运行后,通过双击鼠标来打开excel
- 老爸50大寿,散分庆祝一天
- 高手指点
- 用TTable作数据库多种方法插入的问题
- paradox sql语句where条件中日期怎样表达?
- ===有关打印的问题,十万火急?
- 关于线程同步的问题(急)!
- 明天揭贴-菜鸟请教-adoquery的数组类型参数怎么定义
你看看BT原理,对客户端上线的服务器处理应该差不多
其他的基本不用通过server,那么用户多少有什么关系
user<->user聊天都是自己建立连接的,除非建立不了还会又server中转,好友不在线也又server中转
大量用户使用了服务器集群技术吧....
如果是的话那么怎么建立Socket通道呢?谁是客户端谁是服务器????如果是通过服务器中转 那么速度会那么快吗?
那么多人都跟服务器建立连接 服务器要是用Socket连接支持的了那么多吗?
根据这个协议不就可以往腾讯的服务器灌水了?
.QQ使用的是UDP+TCP,一般默认的是UDP-->无状态连接的,好友之间应该是P2P的,你用D7的IDUDPServer都能做的
.QQ有集群服务器.
.可能先是直接发,超时再通过服务器转发(这个在以前的版本有提示)
.上述的协议是几百年前的版本了. }
因为如果是内网IP,肯定要使用到代理,不然就建立不了连接!知道的顶上来,我想楼主也希望知道吧,^_^ 借宝地学习 ^_^
1 如果是局域网,那么可以直接用UDP协议
2 如果有网关,那么恐怕使用TCP/IP协议
3 如果跨很多网,那么要从QQ服务器上经过,
操作:成为网络服务程序
协议:UDP
端口:6000
名称:QQ
版本:1, 0, 0, 1
创建:2004-12-14
路径:E:\Program Files\Tencent\QQ\QQ.exe这是我的天网防火墙的信息,可见QQ是基于UDP协议的
1.用户登录服务器,服务得到用户的经过NAT的公网IP;如;211.10.5.32:3300(此端口号由网关产生,负责将外网数据发给内网的指定主机,即你所登录的位置),
2.用户得到好友的公网IP后(通过服务器得到),发送握手包,建立彼此方向的打洞包(随便发点数据就行,重要的是一个方向,如内网A发一个数据包给外网B,此时B才有可能发送数据给A,让A成功接收,否则A的网关会丢弃此包,了解???!!)
3.双方通信成功,
4.如果NAT的类型比较特殊会有: 内网A发数据到S,网关NAT时建立一个端口3300,若此时A再发数据到B,有的NAT会在此端口上加一个SESSION,端口不变,而有的NAT会新建立一个端口,此时P2P将失效,这是一个很值得讨论和解决的问题,因为我也正在遇到这个问题.
在登录的时候,QQ会先和服务器建立一个Tcp/iP 连接,
然后会建立4个UDP服务器,监听4000, 6000, 6001, 1085端口,如
果有消息的话,会随机的选用一个和客户端连接!