请问象OICQ那样同时有几十万人在线是如何实现的.(100分)

  • 主题发起人 主题发起人 星月
  • 开始时间 开始时间

星月

Unregistered / Unconfirmed
GUEST, unregistred user!
DELPHI中的TServerSocket能同时支持多少用户连接.用户多了效率问题怎么解决.

OICQ是否是使用UDP连接呢?

请高手帮帮我。
 
不是那么简单的吧,服务器端的硬件条件,软件条件一般人是无法提供的。
oicq在消息传输中使用udp,不过有个确认。
 
Oicq在各地还有分主机,如果光靠一台服务器那不瘫痪才怪呢?!
 
听说OICQ前端是用Vc++
server是用mysql
不知是不是真的
 
好像oicq的服务器端和客户端只是在你登陆的时候,还有当信息要通过服务器转发的时候
才有数据交换,一般的时候你只是和你的好友自己点对点的通讯,与服务器端一点无关了。
 
lanjiancn,
是真的
 
与好友对话时应该是点对点的,如果是用UDP的话,是向整个网络发送消息的,那不是
所有的人都能接受到你的信息了,保密性就太差了
 
服务器是linux
一共有8台
以前我知道的
现在不知道了
 
我的看法:

登录时和服务器连接,服务器得到你的IP,然后把你的IP发到当前你在线的好友!你的好友
发信时就直接和你进行点对点通信(不知是用UDP还是TCP??)

给好友留言:
和服务器连接之后,给离线好友留言时,消息发送至服务器,服务器留下此IP包,当你的好
友上线时,查寻有没有他的留言,若有,则发送!
 
用监视网络软件看看:QQ每隔一段时间会向服务器发一信息,告诉服器我在线。
就这一点点信息量也够多了呀!
 
和聊友之间是点对点.我想也应该这样。

但是和服务器究竟是怎么连的呢?如果是UDP的话,那么服务器是怎么知道客户是否在线呢?

是否真的想redsky.l说的那样.每隔一段时间向服务器发一个信息证明自己在线?

如果是这样,我就给分了?大家还有别的说法吗?
 
pooling+分布式+牛逼的服务器
 
我记得星际争霸的battle.net服务器就是这样,也使用udp协议,应该和
redsky.1说的差不多。
 
>> 请问象OICQ那样同时有几十万人在线是如何实现的

不是这样的

我想应该和 Flintstone,、 Dephic 说的差不多,不要把问题想复杂了,

其实比我们想的要简单!

你可以用网络监视软件看看QQ的动态。

只有登陆时 与服务器 联系一下(拿点资料 ,如好友的IP),
然后 过一段时间,再到服务器看看
有没有什么信息需要取回来(不一定是Server 发给Client,Client也可以主动去取)
与好友的通讯无需Server参与,只有好友隐身和不在线时, Client才会和Server通讯




 
好像用用C++Builder 開發的使用UDP连接
 
QQ是用udp的。
其实连上服务器以后,与好友聊天就是点对点的udp,但有时会“通过服务器中转”。
 
是吗?
用udp连接的.
 
你可以自己在Dos下
输入 netstat -a 看联接的通信,就可以知道是UDP了的
还有 ,QQ一次发出的信息比较少,也可以推断是UDP
TCP/ip是比较安全,不过,消耗比较大,
 
后退
顶部