如何使用LumaQQ核心API

如何使用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)
如果你想控制消息的回复类型(比如是不是自动回复),或者你想控制字体的大小,颜色,样式等等,你可以用这些参数更复杂的sendMessage方法,你会看到你期望的结果的。
你可以在一个虚拟机中创建多个QQClient,但是这部分我还没有仔细测试过,你可以试试。通过创建多个QQClient,可以实现同时登录多个QQ号,这是LumaQQ以后的功能计划之一。

总结

非常简单的例子,非常短的第一部分,只要你把sendMessage替换成其他什么不需要交互的操作,你就有了其他的功能了,哈,欢迎阅读第一部分,以后的部分有空我再写,88

0

收藏

simeon2005 专栏作者

1775篇文章,829W+人气,1365粉丝

让学习改变生活,让学习改变命运,终身学习
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值