DWZ

MAKI

常用链接

统计

积分与排名

QQ数据包

日语

最新评论

QQ类接口

/**
 * <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、

posted on 2008-04-21 22:49 刘冬清 阅读(1482) 评论(0)  编辑 收藏 引用 所属分类: QQ的类


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理