JAVA与QQ网络通讯实例

JAVA与QQ网络通讯实例,第1张

准备工作:

两个QQ(Q号现在好容易申请)

eclipse(支持awt swing 可视化开发的版本为佳)

JDK 以上

JQL 直接从官方那边下载的不能直接用需要改装 下载地址:

步骤:

解压jqgsv beta_src

用eclipse导入目录jqgsv beta_src下的项目

把jqgsv beta_src目录下的mons codec jar 和 mons logging jar加到项目属性里的Librares中

打开 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( )

client setLoginServer( )

qq服务器地址有多种 你可以选一个填上去 QQ号必须是整型

//发送消息

client sendIM(一个好友的QQ号 Util getBytes(ext))//发送一个普通的消息

好友的QQ号必须是整型

类QQClient主要是执行QQ客户端的动作 比如 发送消息 添加好友 获取好友等

//获取你的Q号下的所有好友信息

GetFriendListReplyPacket gf = (GetFriendListReplyPacket)e getSource()

java util List friends = (java util List) gf friends

for(int i = i <friends size() i++){

QQFriend qf = (QQFriend)friends get(i)

jTextArea setText(jTextArea getText() + String valueOf(qf qqNum) + \n )

}

if((int)gf position != ){

client getFriendList(gf position)

}else{

jButton setEnabled(true)

jButton setEnabled(true)

}

client getFriendList() //获取好友列表

这个方法需要配合一个变量position和一个事件才能完成 因为QQ是按多次发送好友列表 position =

表示已到好友列表最后一页 不需要在getFriendList 当得到好友列表会产生一个事件 事件编号

GetFriendListReplyPacket 好友类

//事件驱动

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

public void qqEvent(QQEvent e) {//事件监听器

System out println( 事件ID: + e type)

/* */ switch(e type)

{

/* <MISALIGNED >*/ /* */ default:

break

/* <MISALIGNED >*/ /* */ case :

/* <MISALIGNED >*/ /* */ processLoginSuccess()//对应的事件处理

/* <MISALIGNED >*/ /* */ break

/* <MISALIGNED >*/ /* */ case :

/* <MISALIGNED >*/ /* */ processLoginFail()

/* <MISALIGNED >*/ /* */ break

///* <MISALIGNED >*/ /* */ case :

///* <MISALIGNED >*/ /* */ processLoginUnknownError()

///* <MISALIGNED >*/ /* */ break

/* <MISALIGNED >*/ /* */ case :

/* <MISALIGNED >*/ /* */ processSendIMSuccess()

/* <MISALIGNED >*/ /* */ break

/* <MISALIGNED >*/ /* */ case :

/* <MISALIGNED >*/ /* */ processChangeStatusSuccess()

QQ的每次动作都会产生一个事件 每个事件对应一个整数 在类edu tsinghua lumaqq qq events QQEvent有具体描述

lishixinzhi/Article/program/Java/hx/201311/26541

首先要有个存好友的数据结构:friendList

既然是QQ,那么肯定有好友类别了,一个类别底下的子节点为一个好友。

然后根据这个数据结构画出这个Jtree,

第一列字节点为好友类别,

第二列子节点为好友,给这些字节点添加鼠标点击事件,点击后d出想要的东西。

最后,在接收信息进程内添加一个方法,即一旦有好友上线或者下线则接收改变的好友的信息,之前的存好友的数据结构也随之改变,

再根据这个数据结构改变这个JTree,不会改变的话就重新画一个,tree=new JTree()(tree为之前的列表),这样就可以了。

个人理解是这样的:

首先 每一个QQ号都存于数据库表中, 这个表我这里用User表代替 里面的字段名有

用户的id qq号 ....好友表编号 .....同事表编号 ...群表编号 等等

当用户添加好友的时候 首先找到好友的qq号 将其插入到 User 表中的好友表编号 就行了

即 每个qq用户都应该有 一个好友表 这个表有编号 User里面存的就是好友表的编号

个人理解 希望对你有所帮助,谢谢!


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11702550.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存