LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 4412|回复: 6

用jql2006做了个qq 好友消息群发器,请多指教

[复制链接]
发表于 2007-10-18 20:52:40 | 显示全部楼层 |阅读模式
学习了一下jql2006 的api ,顺便搞出个qq好友群发器,拿出来跟大家分享和交流一下

源代码下载地址:http://www.766la.com/766BBS/forum/t-0-5409-1.html

main在com.myqq.MuiltQQfrendSend   用eclipse 可以导入项目,窗口上用swing

jdk1.5 以上

有个问题我也搞不清楚,为什么不能发送临时消息,估计07的协议变了
 楼主| 发表于 2007-10-21 12:38:05 | 显示全部楼层
继续发:
     准备工作:1.两个QQ(Q号现在好容易申请)
        2.eclipse(支持awt swing 可视化开发的版本为佳)
        3.JDK1.5以上
         4.JQL2006,直接从官方那边下载的不能直接用需要改装,下载地址:http://www.766la.com/766BBS/forum/t-0-5409-1.html

步骤:
     1.解压jqgsv0.1beta_src
     2.用eclipse导入目录jqgsv0.1beta_src下的项目
      3.把jqgsv0.1beta_src目录下的commons-codec.jar 和 commons-logging.jar加到项目属性里的Librares中
      4.打开com.myqq.MuiltQQfrendSend,实例代码都在这里,可以直接运行用eclipse运行该类,如果登陆失败,多登陆
      几次就可以了
                  //登陆代码
                  ....
                  client = new QQClient();
client.setConnectionPoolFactory(new PortGateFactory());
QQUser user = new QQUser(你的Q号, 你Q号的密码);
client.addQQListener(this);
user.setUdp(true);
client.setUser(user);
//client.setLoginServer("sz.tencent.com");
client.setLoginServer("58.61.32.40");
               .....
               qq服务器地址有多种,你可以选一个填上去,QQ号必须是整型

                 //发送消息
                .....
               client.sendIM(一个好友的QQ号,Util.getBytes(comext));//发送一个普通的消息
                ......
              好友的QQ号必须是整型
                类QQClient主要是执行QQ客户端的动作,比如,发送消息,添加好友,获取好友等

               //获取你的Q号下的所有好友信息
               ....
               GetFriendListReplyPacket gf = (GetFriendListReplyPacket)e.getSource();
java.util.List  friends = (java.util.List) gf.friends;
for(int i = 0 ; i  < friends.size() ; i++){
QQFriend qf = (QQFriend)friends.get(i);
jTextArea1.setText(jTextArea1.getText() + String.valueOf(qf.qqNum) + "\n");
}
if((int)gf.position != 65535){
  client.getFriendList(gf.position);
}else{
jButton2.setEnabled(true);
jButton1.setEnabled(true);
}
             ........
             client.getFriendList() //获取好友列表
              这个方法需要配合一个变量position和一个事件才能完成,因为QQ是按多次发送好友列表,position = 65535
            表示已到好友列表最后一页,不需要在getFriendList,当得到好友列表会产生一个事件,事件编号为12
             GetFriendListReplyPacket 好友类

             //事件驱动
              jql全部采用事件驱动,实现接口 IQQListener

            public void qqEvent(QQEvent e) {//事件监听器
System.out.println("事件ID:" + e.type);
     /* 142*/        switch(e.type)
        {
/*  <-MISALIGNED- > */ /* 142*/        default:
            break;
/*  <-MISALIGNED- > */ /* 144*/        case 1:  
/*  <-MISALIGNED- > */ /* 144*/            processLoginSuccess();//对应的事件处理
/*  <-MISALIGNED- > */ /* 145*/            break;
/*  <-MISALIGNED- > */ /* 147*/        case 2:  
/*  <-MISALIGNED- > */ /* 147*/            processLoginFail();
/*  <-MISALIGNED- > */ /* 148*/            break;
///*  <-MISALIGNED- > */ /* 150*/        case 3:  
///*  <-MISALIGNED- > */ /* 150*/            processLoginUnknownError();
///*  <-MISALIGNED- > */ /* 151*/            break;
/*  <-MISALIGNED- > */ /* 153*/        case 16:  
/*  <-MISALIGNED- > */ /* 153*/            processSendIMSuccess();
/*  <-MISALIGNED- > */ /* 154*/            break;
/*  <-MISALIGNED- > */ /* 156*/        case 10:  
/*  <-MISALIGNED- > */ /* 156*/            processChangeStatusSuccess();

                    
       QQ的每次动作都会产生一个事件,每个事件对应一个整数,在类edu.tsinghua.lumaqq.qq.events.QQEvent有具体描述
      如,登陆成功为1,登陆失败为2

先发到这,如有不对的地方,请多多指教
回复 支持 反对

使用道具 举报

发表于 2007-10-21 21:16:11 | 显示全部楼层
2007协议在主页上,找不找的到看你了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-10-22 09:38:39 | 显示全部楼层
谢谢回复,请多指教
回复 支持 反对

使用道具 举报

发表于 2007-10-23 13:03:45 | 显示全部楼层
有没有人找到luma说的那个页面了呀?
我翻了一二百页都没找到,猜文件名也没猜对
回复 支持 反对

使用道具 举报

发表于 2007-10-30 16:31:56 | 显示全部楼层
回复 支持 反对

使用道具 举报

发表于 2009-12-24 11:25:01 | 显示全部楼层
哥们 源码怎么下不到啊 再给个链接吧 !!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表