频 道 直 达 - 新闻 - 读书 - 培训 - 教程 - 前沿 - 组网 - 系统应用 - 安全 - 编程 - 存储 - 操作系统 - 数据库 - 服务器 - 专题 - 产品 - 案例库 - 技术圈 - 博客 - BBS
51CTO.COM_中国领先的IT技术网站
找资料:

网上出现的QQ.NET第一个预览版

作者: 阿不 出处:博客园 2008-03-14 10:56    砖    好    评论   进入论坛
阅读提示:本文作者给出的QQ.NET CTP与珊瑚虫QQ本质上还是有很大不同的,我们没有与QQ软件有什么直接的关系,只是通过发布相同的协议包到他们服务器并接受回馈的信息,其它与腾讯公司的软件也没有很大的关系。

很兴奋能得到这么多人的支持,这也足于说明大家对于这个开发包也是期盼已久的。有人提醒我注意版权问题,也提到了QQ.NET这个名称是否合适。说真的了,涉及法律这方面的问题我也不是特别了解,毕竟这与珊瑚虫QQ本质上还是很大不同的,我们没有与QQ软件有什么直接的关系,只是通过发布相同的协议包到他们服务器并接受回馈的信息,其它与腾讯公司的软件也没有很大的关系。在这里还希望对这知识产权法律比较熟悉的朋友能给一些建议。

不过,在这里,为了感谢这么多支持和期待的朋友,我还是第一时间发布一个预览版吧!在这个版本中,已经实现了QQ的一些基本功能,包括:

1、登录

使用QQ号码和密码进行登录,在LumaQQ中不支持Email登录的。

2、保持连接与登录状态

如果长时间没有向服务器发布保持连接包,QQ服务器会认为你已经下线。所以每隔一段时间(2分钟)会向服务器发送保持连接包,同时也有一个功能就是保持本地的Socket对象处理连接状态,断线了则自动重新建立连接

3、接收信息

可以接受来好友或陌生人的信息,但还没有测试能否接收来自网页的临时信息。此项功能也在计划中,因为做QQ机器人还是很需要这个功能的。

4、发送信息

可以向好友或陌生人回复(发送)信息。

5、读取QQ好友

可以从服务器读取好友列表(但没有分组信息,读取好友分组是另一个命令)

6、读取在线好友

可以读取当前在线的好友列表(只是好友QQ和一些状态相关的属性)

7、读取QQ详细信息

可以根据QQ号码根据该QQ的详细信息(包括自己)

8、修改登录状态

可以将自己的登录状态修改为隐身或其它状态

9、接收到状态改变

当一个好友的状态发生改变后,会接收到系统这样的一个通知。

10、接收系统信息

可以接收来自QQ服务器的系统消息,包括广告,好友添加申请等等。

11、处理好友添加申请

当你的帐号设置为需要验证时,会通过系统信息得到好友的验证申请,使用这个功能你可以处理验证申请(接受或拒绝)

12、删除好友(未验证)

通过这个功能你可以删除一位好友。

13、把自己从好友列表中删除(未验证)

通过这个功能你可以把自己从好友列表中删除(是不是黑名单功能?)

14、添加好友和发布验证信息(有点问题)

通过这个功能可以添加好友,在好友设置为需要添加验证时,会有相应的事件,在这个事件中我们可以发送验证请求。但是不知道什么原因,这个功能却很难通过。 首先是发送添加申请的那个包经过没有收到回复,偶尔成功过,但是发送验证请求却不成功。我试了很多遍,极少数情况下可以,使用LumaQQ也经常这种情 况,但是它成功的机会还是比较多。包协议本身可以确认应该是没有问题的。有空再好好测试一下。

目前就是这么多功能,不过对于只是想开发QQ机器人的朋友来说,这些功能应该是够用了。我今天也特意测试了一些稳定性,结果还是比较满意的,我使用的是代理上网,而且网络情况也不是很稳定。连接在线已经6个小时了,目前依然在线,没有出现什么问题。

回到QQ.NET使用本身,如果你是直接上网,那么只需要下面这段代码即可登录:

QQUser user = new QQUser(****, "****"); 
QQ.NET.QQClient client = new QQ.NET.QQClient(user);
user.IsUdp = true;
client.LoginServerHost = "219.133.62.8";
client.Login();

而如果你代理,则需要设置一下代理服务器地址。注意:目前只需要两个登录方式,如果你直接上网你只能使用UDP登录;如果使用代理上网,那么你就只能使用TCP登录(IsUdp = false)。smile_sad暂时先忍一下吧!

接口方面,因为QQ本身的功能有很多,我没有像LumaQQ那样把所有的功能都定义在QQClient里面,而是将不同的功能包装到不同的类里面,比如连接 功能有ConnectionManager,包发送和处理有PacketManager,而好友处理则放在FriendManager里面等等。这样分别 包装一下,应该可以大大方便大家的使用。

在QQ事件方面,每一个QQ事件参数都会有InputPacket和OutPacket两个属 性,分别表示收到此包和对应的发送包。在有的情况下,可能只有接收包,而没有发送包。因为有的输入包是由服务器主动发送给我们的,比如好友消息和系统消 息。所以要正确区分这两个属性的不同之处。

在包的处理方面,收到包的处理和包的重复发送功能我使用了ThreadPool,而不是 Timer。这让我们更容易控制这些功能的运行时机,改天有时间我会专门介绍这个功能。另外就是超时包,超时包并不是真的网络发送时超时,而是在一个包发 出去后,在一段时间内没有收到QQ服务器的反馈,会再次发送,当发送次数达到一定数量时,就会触发超时事件,不再重复发送。

这个版本按微软的软件发布阶段来定义的话,相当于第一个CTP阶段。主要是想让大家与我一同测试,找出潜在的BUG,找到改进的办法,所以非常欢迎大家提出各建议。

祝大家使用愉快!

源码和文档下载:http://qqnet.googlecode.com/svn/trunk/

【责任编辑:火凤凰 TEL:(010)68476606】

专题
ASP.NET 2.0基础开发指南
.NET移动与嵌入式技术专题
.NET Framework新手入门专题
VS.NET实用开发专题
ADO.NET实用技巧专题
我也说两句

匿名发表

(如果看不清请点击图片进行更换)


中 国 领 先 的 IT 技 术 网 站 ·
技 术 成 就 梦 想
·Java基础教程 (查看70064次)
·UML类图详解 (查看63824次)
·UML统一建模语言 (查看34724次)
·C#技术开发指南 (查看33097次)
·Java编程开发手册 (查看31063次)
·Java编程开发手册 (1196个砖)
·Java基础教程 (429个砖)
·C#技术开发指南 (309个砖)
·.NET开发手册 (240个砖)
·PB开发教程 (223个砖)
·Java编程开发手册 (654个好)
·Java基础教程 (574个好)
·.NET开发手册 (271个好)
·PB开发教程 (212个好)
·Delphi开发技术手册 (188个好)
订阅技术快讯
电子杂志下载
名称:SQL Server数据库管理精品黄皮书
简介:书中文章经过精挑细选,便于用户能根据自己的实际工作和学习,快速在本书寻找到相关资料。内容涵盖了SQL Server的安装与升级、语句查询、数据备份和恢复、自动化任务、数据同步、数据字典、安全和预防、性能和优化、集群等各方面应用信息,以及DBA管理人员在数据库管理工作中
名称:2007路由技术大全
简介:《2007路由技术大全》由51CTO.com网站特别策划制作,该书包括路由器技术、路由器产品、路由器配置、安全设置、路由器故障处理、路由器密码恢复,以及广大网友在实践使用中的心得经验和技巧文章,内容注重实用性,适用于初学者入门,也适合多年从业者提高,是一本实践和理论完
名称:网络安全精品应用黄皮书
简介:《2007精品网络安全黄皮书》包括了9个大类24个小类, 800余篇文章,内容包含了熊猫烧香病毒、DDOS攻击、ARP病等热点问题的介绍及解决方案。从病毒查杀、防范、系统、数据等各方面的安全设置到黑客技术的了解、防范,涉及到了安全应用的全部领域, 由浅至深内容全面。