我觉得是在服务器上
每个用户都分配有一个"字段"是用来存放在线状态的.
然后客户端再根据用户的在线状态 , 显示不同的头像而已.顶楼那位的想法也可以, 当然这只是在人数比较少的情况下适用.
像 QQ 这样活动量大的, 每个人上线就要自动发那么多条消息给对方,
那么光这些没有多大用的"消息"就占了不少网络带宽.
(西西.. 当然这个方法比较适合于基于 tcp/ip 的网络游戏 :)
每个用户都分配有一个"字段"是用来存放在线状态的.
然后客户端再根据用户的在线状态 , 显示不同的头像而已.顶楼那位的想法也可以, 当然这只是在人数比较少的情况下适用.
像 QQ 这样活动量大的, 每个人上线就要自动发那么多条消息给对方,
那么光这些没有多大用的"消息"就占了不少网络带宽.
(西西.. 当然这个方法比较适合于基于 tcp/ip 的网络游戏 :)
解决方案 »
- 为啥timer控件不断的消耗内存?
- 如何让TAB键不移走光标(不使用控件的TABSTOP属性)(能帮我吗?)
- 如何实现
- windows 下面的paradox密码
- 关于delphi中利用IdIcmpClient空间实现ping命令
- delphi下ado查询如何返回一个bool型得值
- 如何动态建立WebBrowser控件
- 日期时间的问题
- 触发器的问题:是否在触发器里不能使用openrowset函数?
- Linux那一个中文版较好! 能安装Kylix吗?
- 高手来帮忙!小问题,100分送上
- 我想保存ListBox中Items.Objects中的物件到文件,但是试过很多方法都不行,不知怎么办?急!哪位大侠知道.
================================================================CSDN 论坛助手 Ver 1.0 B0402提供下载。 改进了很多,功能完备!★ 浏览帖子速度极快![建议系统使用ie5.5以上]。 ★ 多种帖子实现界面。
★ 保存帖子到本地[html格式]★ 监视您关注帖子的回复更新。
★ 可以直接发贴、回复帖子★ 采用XML接口,可以一次性显示4页帖子,同时支持自定义每次显示帖子数量。可以浏览历史记录!
★ 支持在线检测程序升级情况,可及时获得程序更新的信息。★★ 签名 ●
可以在您的每个帖子的后面自动加上一个自己设计的签名哟。Http://www.ChinaOK.net/csdn/csdn.zip
Http://www.ChinaOK.net/csdn/csdn.rar
Http://www.ChinaOK.net/csdn/csdn.exe [自解压]
我的意思是当好友上线下线的时候,为什么能在我的qq中反映出来?
TO windindance(风舞轻扬) QQ这么大一个系统,按你的办法好像不太好吧?
我就是想知道QQ是怎么来实现的
运行 Oicq 时,过程如下:start oicq.exe-> 上线 -> oicq 把口令发给 oicq server -> oicq server 返回其好友名单以及其对
应的 IP (Oicq 把他存到本地内存中的一张表中)。当 Oicq 给相应的好友号码发送消息时,依据的地址
就是这个 IP.即首先与该 IP 联系,反复多次没有回音就通过服务器转发。下面是 Oicq server 通知Oicq 好友上线和下线的消息结构:struct TOicqUp
{
char Tag1; // 0x02 // 显然是 Oicq 的协议编号 or 版本,固定
char Tag2; // 0x01 // 显然是 Oicq 的协议编号 or 版本,固定
char Tag3; // 0x00
char Tag4; // 0x00
char Tag5; // 0x81
char Tag6; // 这两个字节相当于 unix 上的进程 ID,
char Tag7; // 随便赋值就可。
char cOicqNub[]; // 通知上线的Oicq 号码。 exp:123456
char cFF; // 0x1f 在所有的Oicq 信息结构中,分割符都是 0x1f
char cIP; // 该号码所在的 IP 地址
char cFF; //
char cE[]; // "8685" ,这一位相对固定,随便添一个四位数字
char cFF;
char cDD[]; // exp: "10",0x1f,"107" 基本固定
char cEnd; // 0x03 ,所有的 oicq 信息都已 0x03 为标记结束。
};
//--------------------------------------------------------
struct TOicqDown
{
char Tag1; // 0x02 // 显然是 Oicq 的协议编号 or 版本,固定
char Tag2; // 0x01 // 显然是 Oicq 的协议编号 or 版本,固定
char Tag3; // 0x00
char Tag4; // 0x00
char Tag5; // 0x81
char Tag6; // 这两个字节相当于 unix 上的进程 ID,
char Tag7; // 随便赋值就可。
char cOicqNub[]; // 通知上线的Oicq 号码。 exp:123456
char cFF; // 0x1f 在所有的Oicq 信息结构中,分割符都是 0x1f
char cIP; // 该号码所在的 IP 地址 // 随便填
char cFF; //
char cE[]; // "8685" ,这一位相对固定,随便添一个四位数字
char cFF;
char cDD[]; // exp: "20",0x1f,"107" 基本固定
char cEnd; // 0x03 ,所有的 oicq 信息都已 0x03 为标记结束。
};