如何使用LumaQQ核心API
第1部分:从最简单开始
摘要
现在让我们一起来构造自己的QQ程序吧!LumaQQ的核心虽然稍微有点复杂,但是其提供的API非常简单,我们从最简单的例子开始,让你感受一下用10行程序就创造一个能发送消息的QQ客户端的快感。Come on...Luma,清华大学修改历史:
更新时间:2004/03/23
2005-03-23 修改了关于一个虚拟机是否能创建多个QQClient的表述
LumaQQ核心的入口类是QQClient,这个类提供了很多的包装方法方便于上层程序使用。我们请求核心层一个操作时,都是通过这个类进行的,所以这个类的方法也是相当的多,不过放心都很简单。除了QQClient,协议包的封装类,数据结构的封装类,QQ事件的定义类都是你需要了解的,但是这些高级内容我们在这个系列的以后部分中再介绍。本系列提供的所有Demo源文件都可以从CVS中获取,其集中于edu.tsinghua.lumaqq.demo包之下。
核心概述
LumaQQ的核心代码位于edu.tsinghua.lumaqq.qq包之下,这一部分可以单独拿出来成为一个独立的QQ库,名字我都想好了,就叫JQL(Java QQ Library),不过嘛,这个工作一直没做,呵呵。
首先我们粗略介绍一下QQClient,这个类处理了登录和登出的逻辑,因为登录登出基本不需要界面参与,可以独立完成,而且这样做也是有必要的,因为让上层程序来处理登录登出在结构上有些混乱,上层程序应该只关心具体的功能,登录登出这种公共的部分适合于放在核心层处理。QQClient分别提供了login()和logout()方法来处理登录登出,但是由于这些操作都不是立刻能完成的,所以事件机制大量的应用在核心层,比如登录成功的事件,或者密码错误的事件,这些都会在执行操作后的某个时间发生,而你应该是要负责接收这些事件的。不过,这些有关事件的内容,我们放到后面的部分中再做介绍,现在我们追求最简单。
准备开始工作
如果你想运行本文中的Demo,你要让LumaQQ核心代码出现在类路径中,你可以在Eclipse中引用LumaQQ工程,也可以直接就check out出LumaQQ的代码然后去运行这个Demo吧。这个Demo的功能非常简单:就是登录,然后发送一条消息,然后登出;所以,你至少要有两个QQ号才行,如果你只有一个,那就叫你朋友上上QQ帮帮忙吧。
Demo代码
这个Demo实际的代码不过10行而已,下面是它的代码:
public class Demo1 { public static void main(String[] args) { /* 在下面的参数中填入你自己的QQ号和密码 */ // 创建QQClient和QQUser QQClient client = new QQClient(); QQUser user = new QQUser(12345678, "YourPassword"); // 设置参数 user.setUdp(true); client.setUser(user); client.setLoginServer("sz.tencent.com"); client.setAutoGetFriend(false); try { // 登录 client.login(); // 等待登录完成 Thread.sleep(10000); // 发送消息 /* 在sendMessage中填入你自己想发的消息和对方的QQ号 */ client.sendMessage("Hello", 87654321, "宋体"); // 等待消息发送完成 Thread.sleep(6000); } catch (Exception e1) { e1.printStackTrace(); } // 登出 client.logout(); } }
因为我们还没有涉及到事件,所以我们使用了原始的方法来等待登录和发送消息操作的完成,如果在你的机器上还是太快,那么你就让它sleep的更久吧。你必须要替换我随便乱写的QQ号和密码,然后运行就可以了。是不是相当简单? sendMessage方法有很多重载,比如:
- sendMessage(String message, int receiver, String fontName, byte replyType)
- sendMessage(String message, int receiver, String fontName, int size, boolean bold, boolean italic, boolean underline, int red, int green, int blue, byte replyType)
你可以在一个虚拟机中创建多个QQClient,但是这部分我还没有仔细测试过,你可以试试。通过创建多个QQClient,可以实现同时登录多个QQ号,这是LumaQQ以后的功能计划之一。
总结
非常简单的例子,非常短的第一部分,只要你把sendMessage替换成其他什么不需要交互的操作,你就有了其他的功能了,哈,欢迎阅读第一部分,以后的部分有空我再写,88
0
收藏