/**
* <pre>
* 定义一些QQ用到的常量,常量的命名方式经过调整,统一为
* QQ_[类别]_[名称]
*
* 比如表示长度的常量,为QQ_LENGTH_XXXXX
* 表示最大值的常量,为QQ_MAX_XXXX
* </pre>
*
* @author luma
*/
QQ接口类中,包含的属性有:
1、public static final String EMPTY_STRING = ""; () /** 空字符串 */
// 协议族标识
2、 // QQ包类型定义
/** QQ基本协议族包头 */
public static final byte QQ_HEADER_BASIC_FAMILY = 0x02;
/** QQ P2P协议族 */
public static final byte QQ_HEADER_P2P_FAMILY = 0x00;
/** 03协议族包头 */
public static final byte QQ_HEADER_03_FAMILY = 0x03;
/** 04开头的协议族,未知含义,文件中转包有用到过 */
public static final byte QQ_HEADER_04_FAMILY = 0x04;
/** 05协议族包头 */
public static final byte QQ_HEADER_05_FAMILY = 0x05;
/** QQ基本协议族包尾 */
public static final byte QQ_TAIL_BASIC_FAMILY = 0x03;
/** 05系列协议族包尾 */
public static final byte QQ_TAIL_05_FAMILY = 0x03;
3、
/** 不需要确认的包的发送次数,这个值应该是随便的,由于QQ Logout包发了4次,所以我选4 */
public static final int QQ_SEND_TIME_NOACK_PACKET = 4;
/** QQ登录包中16到51字节的固定内容 */
public static final byte[] QQ_LOGIN_16_51 = new byte[] {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, (byte)0x86, (byte)0xCC, 0x4C, 0x35, 0x2C,
(byte)0xD3, 0x73, 0x6C, 0x14, (byte)0xF6, (byte)0xF6, (byte)0xAF, (byte)0xC3,
(byte)0xFA, 0x33, (byte)0xA4, 0x01
};
/** QQ登录包中53到68字节的固定内容 */
public static final byte[] QQ_LOGIN_53_68 = new byte[] {
(byte)0x8D, (byte)0x8B, (byte)0xFA, (byte)0xEC, (byte)0xD5, 0x52, 0x17, 0x4A,
(byte)0x86, (byte)0xF9, (byte)0xA7, 0x75, (byte)0xE6, 0x32, (byte)0xD1, 0x6D
};
/** QQ登录包中的未知固定内容 */
public static final byte[] QQ_LOGIN_SEGMENTS = new byte[] {
0x0B, 0x04, 0x02, 0x00, 0x01, 0x00,
0x00, 0x00, 0x00, 0x00, 0x03, 0x09, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, (byte)0xE9, 0x03,
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, (byte)0xF3,
0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
(byte)0xED, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x01, (byte)0xEC, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x03, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x03, 0x07, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x01, (byte)0xEE, 0x03, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x01, (byte)0xEF, 0x03, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, (byte)0xEB, 0x03,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
4、
/** 包最大大小 */
public static final int QQ_MAX_PACKET_SIZE = 65535;
/**
* 消息最大长度,QQ是最大700字节
*/
public static final int QQ_MAX_SEND_IM = 700;
/** 密钥长度 */
public static final int QQ_LENGTH_KEY = 16;
/** 登陆信息长度 */
public static final int QQ_LENGTH_LOGIN_DATA = 416;
/** QQ UDP缺省端口 */
public static final int QQ_PORT_UDP = 8000;
/** QQ TCP缺省端口 */
public static final int QQ_PORT_TCP = 80;
/** 使用HTTP代理时连接QQ服务器的端口 */
public static final int QQ_PORT_HTTP = 443;
/** QQ缺省编码方式 */
public static final String QQ_CHARSET_DEFAULT = "GBK";
/** 消息编码,好像可以自己胡乱定义 */
public static final char QQ_CHARSET_GB = 0x8602;
public static final char QQ_CHARSET_EN = 0x0000;
public static final char QQ_CHARSET_BIG5 = 0x8603;
/** 单位: ms */
public static final long QQ_TIMEOUT_SEND = 5000;
/** 最大重发次数 */
public static final int QQ_MAX_RESEND = 5;
/** Keep Alive包发送间隔,单位: ms */
public static final long QQ_INTERVAL_KEEP_ALIVE = 100000;
5、
// 和虚拟摄像头有关系
/** 显示虚拟摄像头 */
public static final int QQ_CAM_SHOW_FAKE = 1;
/** 隐藏虚拟摄像头 */
public static final int QQ_CAM_DONT_SHOW_FAKE = 0;
/** QQ分组的名称最大字节长度,注意一个汉字是两个字节 */
public static final int QQ_MAX_GROUP_NAME = 16;
/** QQ昵称的最长长度 */
public static final int QQ_MAX_NAME_LENGTH = 250;
/** QQ缺省表情个数 */
public static final int QQ_COUNT_DEFAULT_FACE = 96;
/** 得到用户信息的回复包字段个数 */
public static final int QQ_COUNT_GET_USER_INFO_FIELD = 37;
/** 修改用户信息的请求包字段个数,比实际的多1,最开始的QQ号不包括 */
public static final int QQ_COUNT_MODIFY_USER_INFO_FIELD = 35;
/** 用户备注信息的字段个数 */
public static final int QQ_COUNT_REMARK_FIELD = 7;
/** 客户端版本号标志 - QQ2005 */
public static final char QQ_CLIENT_VERSION_0E1B = 0x0E1B;
/**
* 服务器端版本号 (不一定)
* 不一定真的是表示服务器端版本号,似乎和发出的包不同,这个有其他的含义,
* 感觉像是包的类型标志
*/
public static final char QQ_SERVER_VERSION_0100 = 0x0100;
6、
/** 中转服务器版本号 */
public static final char QQ_AGENT_SERVER_VERSION_04D1 = 0x04D1;
/** 程序缺省使用的客户端版本号 */
public static final char QQ_CLIENT_VERSION = QQ_CLIENT_VERSION_0E1B;
/** 正常登陆 */
public static final byte QQ_LOGIN_MODE_NORMAL = 0x0A;
/** 隐身登陆 */
public static final byte QQ_LOGIN_MODE_HIDDEN = 0x28;
/** 性别-男 */
public static final byte QQ_GENDER_GG = 0x0;
/** 性别-女 */
public static final byte QQ_GENDER_MM = 0x1;
/** 性别-未知 */
public static final byte QQ_GENDER_UNKNOWN = (byte)0xFF;
7、
/** 在线状态-在线 */
public static final byte QQ_STATUS_ONLINE = 0x0A;
/** 在线状态-离线 */
public static final byte QQ_STATUS_OFFLINE = 0x14;
/** 在线状态-离开 */
public static final byte QQ_STATUS_AWAY = 0x1E;
/** 在线状态-隐身 */
public static final byte QQ_STATUS_HIDDEN = 0x28;
8、
// 回复常量
/** 通用常量,操作成功 */
public static final byte QQ_REPLY_OK = 0x00;
/** 对方已经是我的好友 */
public static final byte QQ_REPLY_ADD_FRIEND_ALREADY = (byte)0x99;
/** 请求登录令牌成功 */
public static final byte QQ_REPLY_REQUEST_LOGIN_TOKEN_OK = 0x00;
/** 登录信息-重定向 */
public static final byte QQ_REPLY_LOGIN_REDIRECT = 0x01;
/** 登录信息-登录失败 */
public static final byte QQ_REPLY_LOGIN_FAIL = 0x05;
/** 改变在线状态成功 */
public static final byte QQ_REPLY_CHANGE_STATUS_OK = 0x30;
/** 发送认证消息成功 */
public static final byte QQ_REPLY_ADD_FRIEND_AUTH_OK = 0x30;
/** 高级搜索结束,没有更多数据 */
public static final byte QQ_REPLY_ADVANCED_SEARCH_END = 1;
/** 申请中转服务器,重定向 */
public static final char QQ_REPLY_REQUEST_AGENT_REDIRECT = 0x0001;
/** 申请中转服务器成功 */
public static final char QQ_REPLY_REQUEST_AGENT_OK = 0x0000;
/** 要发送的图片太大 */
public static final char QQ_REPLY_REQUEST_AGENT_TOO_LONG = 0x0003;
9、
/** 命令常量 - 登出 */
public static final char QQ_CMD_LOGOUT = 0x0001;
/** 命令常量 - 保持在线状态 */
public static final char QQ_CMD_KEEP_ALIVE = 0x0002;
/** 命令常量 - 修改自己的信息 */
public static final char QQ_CMD_MODIFY_INFO = 0x0004;
/** 命令常量 - 查找用户 */
public static final char QQ_CMD_SEARCH_USER = 0x0005;
/** 命令常量 - 得到好友信息 */
public static final char QQ_CMD_GET_USER_INFO = 0x0006;
/**
* 命令常量 - 添加一个好友
*
* @deprecated 2005使用QQ_CMD_ADD_FRIEND_EX
*/
public static final char QQ_CMD_ADD_FRIEND = 0x0009;
/** 命令常量 - 删除一个好友 */
public static final char QQ_CMD_DELETE_FRIEND = 0x000A;
/** 命令常量 - 发送验证信息 */
public static final char QQ_CMD_ADD_FRIEND_AUTH = 0x000B;
/** 命令常量 - 改变自己的在线状态 */
public static final char QQ_CMD_CHANGE_STATUS = 0x000D;
/** 命令常量 - 确认收到了系统消息 */
public static final char QQ_CMD_ACK_SYS_MSG = 0x0012;
/** 命令常量 - 发送消息 */
public static final char QQ_CMD_SEND_IM = 0x0016;
/** 命令常量 - 接收消息 */
public static final char QQ_CMD_RECV_IM = 0x0017;
/** 命令常量 - 把自己从对方好友名单中删除 */
public static final char QQ_CMD_REMOVE_SELF = 0x001C;
/** 请求一些操作需要的密钥,比如文件中转,视频也有可能 */
public static final char QQ_CMD_REQUEST_KEY = 0x001D;
/** 命令常量 - 登陆 */
public static final char QQ_CMD_LOGIN = 0x0022;
/** 命令常量 - 得到好友列表 */
public static final char QQ_CMD_GET_FRIEND_LIST = 0x0026;
/** 命令常量 - 得到在线好友列表 */
public static final char QQ_CMD_GET_ONLINE_OP = 0x0027;
/** 命令常量 - 发送短消息 */
public static final char QQ_CMD_SEND_SMS = 0x002D;
/** 命令常量 - 群相关命令 */
public static final char QQ_CMD_CLUSTER_CMD = 0x0030;
/** 命令常量 - 测试连接 */
public static final char QQ_CMD_TEST = 0x0031;
/** 命令常量 - 分组数组操作 */
public static final char QQ_CMD_GROUP_DATA_OP = 0x003C;
/** 命令常量 - 上传分组中的好友QQ号列表 */
public static final char QQ_CMD_UPLOAD_GROUP_FRIEND = 0x003D;
/** 命令常量 - 好友相关数据操作 */
public static final char QQ_CMD_FRIEND_DATA_OP = 0x003E;
/** 命令常量 - 下载分组中的好友QQ号列表 */
public static final char QQ_CMD_DOWNLOAD_GROUP_FRIEND = 0x0058;
/** 命令常量 - 好友等级信息相关操作 */
public static final char QQ_CMD_FRIEND_LEVEL_OP = 0x005C;
/** 命令常量 - 隐私数据操作 */
public static final char QQ_CMD_PRIVACY_DATA_OP = 0x005E;
/** 命令常量 - 群数据操作命令 */
public static final char QQ_CMD_CLUSTER_DATA_OP = 0x005F;
/** 命令常量 - 好友高级查找 */
public static final char QQ_CMD_ADVANCED_SEARCH = 0x0061;
/** 命令常量 - 请求登录令牌 */
public static final char QQ_CMD_REQUEST_LOGIN_TOKEN = 0x0062;
/** 命令常量 - 用户属性操作 */
public static final char QQ_CMD_USER_PROPERTY_OP = 0x0065;
/** 命令常量 - 临时会话操作 */
public static final char QQ_CMD_TEMP_SESSION_OP = 0x0066;
/** 命令常量 - 个性签名的操作 */
public static final char QQ_CMD_SIGNATURE_OP = 0x0067;
/** 命令常量 - 接收到系统消息 */
public static final char QQ_CMD_RECV_MSG_SYS = 0x0080;
/** 命令常量 - 好友改变状态 */
public static final char QQ_CMD_RECV_MSG_FRIEND_CHANGE_STATUS = 0x0081;
/** 命令常量 - 天气操作 */
public static final char QQ_CMD_WEATHER_OP = 0x00A6;
/** 命令常量 - QQ2005使用的添加好友命令 */
public static final char QQ_CMD_ADD_FRIEND_EX = 0x00A7;
/** 命令常量 - 发送验证消息 */
public static final char QQ_CMD_AUTHORIZE = 0X00A8;
/** 命令常量 - 未知命令,调试用途 */
public static final char QQ_CMD_UNKNOWN = 0xFFFF;
10、
/** 命令常量 - 登出 */
public static final char QQ_CMD_LOGOUT = 0x0001;
/** 命令常量 - 保持在线状态 */
public static final char QQ_CMD_KEEP_ALIVE = 0x0002;
/** 命令常量 - 修改自己的信息 */
public static final char QQ_CMD_MODIFY_INFO = 0x0004;
/** 命令常量 - 查找用户 */
public static final char QQ_CMD_SEARCH_USER = 0x0005;
/** 命令常量 - 得到好友信息 */
public static final char QQ_CMD_GET_USER_INFO = 0x0006;
/**
* 命令常量 - 添加一个好友
*
* @deprecated 2005使用QQ_CMD_ADD_FRIEND_EX
*/
public static final char QQ_CMD_ADD_FRIEND = 0x0009;
/** 命令常量 - 删除一个好友 */
public static final char QQ_CMD_DELETE_FRIEND = 0x000A;
/** 命令常量 - 发送验证信息 */
public static final char QQ_CMD_ADD_FRIEND_AUTH = 0x000B;
/** 命令常量 - 改变自己的在线状态 */
public static final char QQ_CMD_CHANGE_STATUS = 0x000D;
/** 命令常量 - 确认收到了系统消息 */
public static final char QQ_CMD_ACK_SYS_MSG = 0x0012;
/** 命令常量 - 发送消息 */
public static final char QQ_CMD_SEND_IM = 0x0016;
/** 命令常量 - 接收消息 */
public static final char QQ_CMD_RECV_IM = 0x0017;
/** 命令常量 - 把自己从对方好友名单中删除 */
public static final char QQ_CMD_REMOVE_SELF = 0x001C;
/** 请求一些操作需要的密钥,比如文件中转,视频也有可能 */
public static final char QQ_CMD_REQUEST_KEY = 0x001D;
/** 命令常量 - 登陆 */
public static final char QQ_CMD_LOGIN = 0x0022;
/** 命令常量 - 得到好友列表 */
public static final char QQ_CMD_GET_FRIEND_LIST = 0x0026;
/** 命令常量 - 得到在线好友列表 */
public static final char QQ_CMD_GET_ONLINE_OP = 0x0027;
/** 命令常量 - 发送短消息 */
public static final char QQ_CMD_SEND_SMS = 0x002D;
/** 命令常量 - 群相关命令 */
public static final char QQ_CMD_CLUSTER_CMD = 0x0030;
/** 命令常量 - 测试连接 */
public static final char QQ_CMD_TEST = 0x0031;
/** 命令常量 - 分组数组操作 */
public static final char QQ_CMD_GROUP_DATA_OP = 0x003C;
/** 命令常量 - 上传分组中的好友QQ号列表 */
public static final char QQ_CMD_UPLOAD_GROUP_FRIEND = 0x003D;
/** 命令常量 - 好友相关数据操作 */
public static final char QQ_CMD_FRIEND_DATA_OP = 0x003E;
/** 命令常量 - 下载分组中的好友QQ号列表 */
public static final char QQ_CMD_DOWNLOAD_GROUP_FRIEND = 0x0058;
/** 命令常量 - 好友等级信息相关操作 */
public static final char QQ_CMD_FRIEND_LEVEL_OP = 0x005C;
/** 命令常量 - 隐私数据操作 */
public static final char QQ_CMD_PRIVACY_DATA_OP = 0x005E;
/** 命令常量 - 群数据操作命令 */
public static final char QQ_CMD_CLUSTER_DATA_OP = 0x005F;
/** 命令常量 - 好友高级查找 */
public static final char QQ_CMD_ADVANCED_SEARCH = 0x0061;
/** 命令常量 - 请求登录令牌 */
public static final char QQ_CMD_REQUEST_LOGIN_TOKEN = 0x0062;
/** 命令常量 - 用户属性操作 */
public static final char QQ_CMD_USER_PROPERTY_OP = 0x0065;
/** 命令常量 - 临时会话操作 */
public static final char QQ_CMD_TEMP_SESSION_OP = 0x0066;
/** 命令常量 - 个性签名的操作 */
public static final char QQ_CMD_SIGNATURE_OP = 0x0067;
/** 命令常量 - 接收到系统消息 */
public static final char QQ_CMD_RECV_MSG_SYS = 0x0080;
/** 命令常量 - 好友改变状态 */
public static final char QQ_CMD_RECV_MSG_FRIEND_CHANGE_STATUS = 0x0081;
/** 命令常量 - 天气操作 */
public static final char QQ_CMD_WEATHER_OP = 0x00A6;
/** 命令常量 - QQ2005使用的添加好友命令 */
public static final char QQ_CMD_ADD_FRIEND_EX = 0x00A7;
/** 命令常量 - 发送验证消息 */
public static final char QQ_CMD_AUTHORIZE = 0X00A8;
/** 命令常量 - 未知命令,调试用途 */
public static final char QQ_CMD_UNKNOWN = 0xFFFF;
11、
// 消息类型,这个类型比上面的类型又再低一级,他们基本从属于QQ_RECV_IM_FRIEND
// 所以他们是normalIMHeader中的类型
/** 普通文件消息 */
public static final char QQ_IM_TYPE_TEXT = 0x000B;
/** 一个TCP连接请求 */
public static final char QQ_IM_TYPE_TCP_REQUEST = 0x0001;
/** 接收TCP连接请求 */
public static final char QQ_IM_TYPE_ACCEPT_TCP_REQUEST = 0x0003;
/** 拒绝TCP连接请求 */
public static final char QQ_IM_TYPE_REJECT_TCP_REQUEST = 0x0005;
/** UDP连接请求 */
public static final char QQ_IM_TYPE_UDP_REQUEST = 0x0035;
/** 接受UDP连接请求 */
public static final char QQ_IM_TYPE_ACCEPT_UDP_REQUEST = 0x0037;
/** 拒绝UDP连接请求 */
public static final char QQ_IM_TYPE_REJECT_UDP_REQUEST = 0x0039;
/** 通知文件传输端口 */
public static final char QQ_IM_TYPE_NOTIFY_IP = 0x003B;
/** 请求对方主动连接 */
public static final char QQ_IM_TYPE_ARE_YOU_BEHIND_FIREWALL = 0x003F;
/** 未知含意 */
public static final char QQ_IM_TYPE_ARE_YOU_BEHIND_PROXY = 0x0041;
/** 未知含意,0x0041的回复 */
public static final char QQ_IM_TYPE_YES_I_AM_BEHIND_PROXY = 0x0042;
/** 通知文件中转服务器信息 */
public static final char QQ_IM_TYPE_NOTIFY_FILE_AGENT_INFO = 0x004B;
/** 取消TCP或者UDP连接请求 */
public static final char QQ_IM_TYPE_REQUEST_CANCELED = 0x0049;
12、