| « | may 2026 | » | | 日 | 一 | 二 | 三 | 四 | 五 | 六 | | | | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | | | | | | | |
| 公告 |
|
我是沙漠中细沙一砾, 你们是我身旁盛开的灿烂的仙人掌花, 点缀着我孤寂的生活! |
| Blog信息 |
|
blog名称: 日志总数:30 评论数量:76 留言数量:-2 访问次数:169577 建立时间:2004年12月30日 |

| |
|
LumaQQ 跬步文档 其他
godknows 发表于 2005/6/4 0:17:48 |
|
LumaQQ 开发者文档
500)this.width=500'>
LumaQQ 跬步文档
查找用户
Luma, 清华大学更新时间: 2005-04-27
QQ有很多种查找方式,这里是最简单的一种查找方式,2004版本开始有了高级查找,我们后面再介绍。以前我们只能查找全部在线用户,或者根据用户的一些特定信息查找(叫做自定义查找)。所以这个命令又包含两种搜索方式。
请求包格式搜索方式的相关常量如下:
QQ_SEARCH_ALL: 查找全部在线用户
QQ_SEARCH_CUSTOM: 自定义查找
搜索方式为QQ_SEARCH_ALL时:
头部
搜索方式,1字节
1字节分隔符: 0x1F
页号的十进制字符串形式,从0开始。你应该知道在线用户是很多的,所以要分成多页来显示。实际上这个页号是否真的有用也不好说,你如果不停的请求得到第0页的用户,你会发现返回结果都不一样,所以,这个页号有没有用很难说,不知道服务器是怎么做的。按照常理呢,你还是在程序中递增这个页号吧。
尾部
搜索方式为QQ_SEARCH_CUSTOM时:
头部
搜索方式,1字节
1字节分隔符: 0x1F
要搜索的用户的QQ号的字符串形式
1字节分隔符: 0x1F
要搜索的用户的昵称
1字节分隔符: 0x1F
要搜索的用户的email
1字节分隔符: 0x1F
页号的字符串形式
1个字节,0x00,应该是结束符吧,因为前面是页号,考虑c语言的字符串表示方式,这个应该是页号的结束符
尾部 对于那些不存在的条件,把这个字段置为空就是了
回复包格式搜索的结果,有两种情况,一种是搜到了一些用户,一种是没搜到,这好像是废话哈?嗯,那么重要的是这种结果之后的含义,没搜到简单啊,那你就应该停止发送搜索请求了。要是搜到了呢?还继续搜不?这个当然就看你自己了,你想继续就继续,但是要记得把页号加1。
没搜到时:
头部
字符串"-1",变成16进制就是0x2D31
尾部
搜到时:
头部
用户的资料,每个用户有4个字段,字段的顺序是"QQ号,昵称,地区,头像号码",注意这些字段都是字符串形式。所以为了分隔这些字段,同时为了分隔这些用户,这里面有两种分隔符:0x1F用来分隔用户,0x1E用来分隔用户的4个字段。要注意的是边界的情况,因为头像号码是最后一个字段,所以头像号码后面不是0x1E而是0x1F。那么自然QQ号前面也是0x1F。另外,第一个用户前面没有0x1F。搜索的结果被封装在edu.tsinghua.lumaqq.qq.beans.UserInfo中,一个用户对应一个UserInfo。
尾部
成功时
操作成功时,核心层会触发QQ_SEARCH_USER_SUCCESS事件,这个事件携带的包是SearchUserReplyPacket,可用的字段如下:
finished: boolean, true表示后面还可能有更多的匹配,你应该页号加1继续搜
users: java.util.List,里面存放的是UserInfo对象
搜索结束时
操作成功时,核心层会触发QQ_SEARCH_USER_END事件,这个事件携带的包是SearchUserReplyPacket,可用的字段如下:
finished: boolean, 既然是搜索结束,这个字段当然是true
失败时
因为目前未知还没失败过,所以不知道失败时候的模样,自然也没有失败的事件了
LumaQQ is a Java QQ client which has a reusable pure Java core and SWT-based GUI |
|
|