QQ服务器要和那么多客户端连接,服务器是怎么做到的?

cppkiller 2006-06-16 12:40:05
一个端口对一个客户吗?那得多少端口啊?
...全文
9379 78 打赏 收藏 转发到动态 举报
写回复
用AI写文章
78 条回复
切换为时间正序
请发表友善的回复…
发表回复
wc_king 2006-11-05
  • 打赏
  • 举报
回复
感谢大康的代码回复!
对于计算机集群这个概念理解不深,请问各位有什么介绍这个概念的资料?
谢谢!
受益了!
再次拜谢!
cppkiller 2006-06-24
  • 打赏
  • 举报
回复
暂且结贴把分给了。起始设定分数太少,研究了半天不知道怎么加分,有好些朋友都该得分的。。。
wq_quake 2006-06-22
  • 打赏
  • 举报
回复
不好意思,建议楼主看看windows网络游戏编程这本书,上面写了一些理论的东西。应该先从理论做起,我做过私服的服务器端编程,用的是Indy,indy是开发源码的,更好一些的还有dxsock尽管都是pascal代码,不过语法么,和c没有什么太大的差别。先读代码再从简单的例子做起,必须得动手作一下才能明白!!!
cppkiller 2006-06-20
  • 打赏
  • 举报
回复
谢谢大康的代码回复。
也谢谢其它网友的回复。起始设分太少了,怎么加分呢?
benjiam 2006-06-20
  • 打赏
  • 举报
回复
一般QQ是大概5000并发但台PC的实现

tcp 都有1w 何况udp


我得到的资料是udp 单机10w tcp 1w
  • 打赏
  • 举报
回复
QQ说同时在线人数已经突破2000万了
----又不是同时登陆,同时登陆有个十万就差不多了
ggy56 2006-06-19
  • 打赏
  • 举报
回复
盲人说象!
自己把自己玩了还不知道
ggy56 2006-06-19
  • 打赏
  • 举报
回复
什么乱七八糟的?!
工具箱 2006-06-19
  • 打赏
  • 举报
回复
结果是什么样的呀! 还是没搞清楚。。。

我在继续学习中。。。
diyahua 2006-06-19
  • 打赏
  • 举报
回复
QQ只是登录时候才与服务器作一次请求,其它情况下都是P2P的了
sun_daxigua 2006-06-19
  • 打赏
  • 举报
回复
谁说一个端口对付所有的连接不行啊?这么大的通信量,肯定是要做集群的。一个端口的说法是针对一个服务器的。那么多的服务器,还怕承受不了请求啊。腾讯有没有钱就不说了,人家靠这个吃饭的。机群里有负载均衡技术,根本不用担心
sandy33 2006-06-19
  • 打赏
  • 举报
回复
HAVENT(夜雨流星℡) ( ) 信誉:100
……楼主对通讯了解太少

服务器只需开1个端口就足够了

腾讯服务器好像多开了几个端口
人家服务器牛,网络宽阔

最重要的是QQ只负责维护用户列表而已,真正的通讯除了转发的都是P2P连接,除了第一次向服务器获取对方地址外就不会叨扰服务器了(当然,QQ会定期上服务器告知服务器自己还健在,顺便下载好友在线情况)

zhaojiang(不会飞的鱼) ( ) 信誉:100
实际上QQ采用的是UDP协议,而不是TCP协议.
UDP是无连接的, 所以任务与服务器的通讯都是断开的,不存在什么连接问题, 这也是为什么你们有时候会看见"刚才的消息XXXX, 没有成功发送...", 这是因为在规定的时间内,发送的UDP数据包没有收到响应信息,登陆的时候,也是通过这种方式, 验证成功后,会返回一个成功的状态信息到客户端,并在服务器记录当前用户在线, 这就是为什么有的人机器宕掉了,没有向服务器发送退出的信息,所以别人看到该用户"在线", 直到服务器在规定的时间内没有收到客户端的响应信息,所以才清除用户状态.此时别的用户才能知道此用户已经下线了.

我认为此二位讲的有道理,QQ一定不会是实时与服务器相连的,看断线后一会儿QQ才出现下线的提示,可看出。是隔段时间刷新的。这么多人在线腾讯公司的服务器不止1000台吧。
搬运工木木 2006-06-19
  • 打赏
  • 举报
回复
服务端一个端口和多个端口其实还不是一样,如果一个端口要挤爆,多个端口一样要挤爆吧,都是同一个IP的,从网络层而言,都是到同一地址的
yu308 2006-06-19
  • 打赏
  • 举报
回复
mark
huzhangyou 2006-06-19
  • 打赏
  • 举报
回复
我的blog有一片文章
类似于QQ游戏百万人同时在线的服务器架构实现!
http://221.8.9.2/youyou/boblog/read.php?41

还有大型服务器设计的代码
一般windows采用IOCP + ThreadPool
linux采用异步 + non-Blocking + ThreadPool实现
当然按照socket的规定
最大只能支持2^32并发
也就是6w多一点
然而实际根本就不可能的
一般QQ是大概5000并发但台PC的实现,他们使用服务器集群
对于一个QQ游戏100w量,起码需要200台机器的集群
asonglaw 2006-06-19
  • 打赏
  • 举报
回复
暈倒,沒有常常聽說MS SQL的端口是1433,HTTP的端口是80嗎;要是一個客戶端一個端口,那客戶端怎麼去找服務器啊?服務器的端口是固定的,客戶端是動態的。
liangxf0022 2006-06-19
  • 打赏
  • 举报
回复
最好绑定之前用netstat -a看看你现在所有已经绑定得端口
liangxf0022 2006-06-19
  • 打赏
  • 举报
回复
未处理的“System.Net.Sockets.SocketException”类型的异常出现在 system.dll 中。

其他信息: 通常每个套接字地址 (协议/网络地址/端口)
只允许使用一次。

==========

你不可以重复绑定端口,比如别人已经绑定了端口了。
liangxf0022 2006-06-19
  • 打赏
  • 举报
回复

……楼主对通讯了解太少

服务器只需开1个端口就足够了

腾讯服务器好像多开了几个端口
人家服务器牛,网络宽阔
--------------------------
好像这个并不是最好的方案哦,1个端口的容量造就被撑爆了。如果这样的话,Web服务器也不用集群了,一个服务器就OK了
cxz7531 2006-06-19
  • 打赏
  • 举报
回复
至于两个客户端之间聊天,是直接通信,无需服务器中转。每个客户端都包含一个Socket server,和两个Socket Client
加载更多回复(58)
适用人群通用各大网易系,腾讯QQ系,新浪系,阿里系等主流邮箱;同时也适用于企业开发的企业邮箱,进行收件和发件。课程概述通用各大网易系,腾讯QQ系,新浪系,阿里系等主流邮箱;同时也适用于企业开发的企业邮箱,进行收件和发件。POP3是Post Office Protocol 3的简称,即邮局协议的第3个版本,它规定怎样将个人计算机连接到Internet的邮件服务器和下载电子邮件的电子协议。它是因特网电子邮件的第一个离线协议标准,POP3允许用户从服务器上把邮件存储到本地主机(即自己的计算机)上,同时删除保存在邮件服务器上的邮件,而POP3服务器则是遵循POP3协议的接收邮件服务器,用来接收电子邮件的SMTP 的全称是“Simple Mail Transfer Protocol”,即简单邮件传输协议。它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式。SMTP 协议属于 TCP/IP 协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。SMTP 服务器就是遵循 SMTP 协议的发送邮件服务器。   SMTP 认证,简单地说就是要求必须在提供了账户名和密码之后才可以登录 SMTP 服务器,这就使得那些垃圾邮件的散播者无可乘之机。。【开发者如何进行快速开发邮件发送系统???本课程系统进行快速研发,项目实战】 部分截图如下:完整版请查看课件或者视频

110,532

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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