亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? basicinpacket.java

?? LUMAQQ源代碼 JAVA 地球人都知道
?? JAVA
字號:
/*
* LumaQQ - Java QQ Client
*
* Copyright (C) 2004 notXX
*                    luma <stubma@163.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
package edu.tsinghua.lumaqq.qq.packets;

import java.nio.ByteBuffer;

import edu.tsinghua.lumaqq.qq.QQ;
import edu.tsinghua.lumaqq.qq.Util;
import edu.tsinghua.lumaqq.qq.annotation.BasePacket;
import edu.tsinghua.lumaqq.qq.annotation.DocumentalPacket;
import edu.tsinghua.lumaqq.qq.beans.QQUser;

/**
 * <pre>
 * 基本協議族的輸入包基類:
 * 1. 包頭標志,1字節,0x02
 * 2. 服務器端版本代碼, 2字節
 * 3. 命令,2字節
 * 4. 包序號,2字節
 * 5. 包體
 * 6. 包尾標志,1字節,0x03
 * <pre>
 * 
 * @author notxx
 * @author luma
 */
@DocumentalPacket
@BasePacket(name="基本協議族輸入包", klass=BasicInPacket.class)
public abstract class BasicInPacket extends InPacket {
	/**
	 * @param command
	 * @param user
	 */
	public BasicInPacket(char command, QQUser user) {
		super(QQ.QQ_HEADER_BASIC_FAMILY, QQ.QQ_SERVER_VERSION_0100, command, user);
	}
	
	/**
	 * 構造一個指定參數的包.從buf的當前位置開始解析直到limit
	 * 
	 * @param buf ByteBuffer對象
	 * @throws PacketParseException
	 *                    內容解析出錯.
	 */
	public BasicInPacket(ByteBuffer buf, QQUser user) throws PacketParseException {
	    super(buf, user);
	}
	
	/**
	 * 構造一個InPacket,從buf的當前位置解析length個字節
	 * 
	 * @param buf ByteBuffer對象
	 * @param length 字節數
	 * @throws PacketParseException
	 *  				  內容解析出錯
	 */
	public BasicInPacket(ByteBuffer buf, int length, QQUser user) throws PacketParseException {
	    super(buf, length, user);
	}
	
	/* (non-Javadoc)
     * @see edu.tsinghua.lumaqq.qq.packets.Packet#parseHeader(java.nio.ByteBuffer)
     */
	@Override
    protected void parseHeader(ByteBuffer buf) throws PacketParseException {
	    if(!user.isUdp())
	        buf.getChar();
	    header = buf.get();
		source = buf.getChar();
		command = buf.getChar();
		sequence = buf.getChar();
    }
    
    /* (non-Javadoc)
     * @see edu.tsinghua.lumaqq.qq.packets.Packet#parseTail(java.nio.ByteBuffer)
     */
	@Override
    protected void parseTail(ByteBuffer buf) {
        buf.get();
    }
    
    /* (non-Javadoc)
     * @see edu.tsinghua.lumaqq.qq.packets.Packet#putHead(java.nio.ByteBuffer)
     */
	@Override
    protected void putHead(ByteBuffer buf) {
	    if(!user.isUdp())
	        buf.putChar((char)0);
		buf.put(getHeader());
		buf.putChar(source);
		buf.putChar(command);
		buf.putChar(sequence);
    }
    
    /* (non-Javadoc)
     * @see edu.tsinghua.lumaqq.qq.packets.Packet#putBody(java.nio.ByteBuffer)
     */
	@Override
    protected void putBody(ByteBuffer buf) {
    }
    
    /* (non-Javadoc)
     * @see edu.tsinghua.lumaqq.qq.packets.Packet#putTail(java.nio.ByteBuffer)
     */
	@Override
    protected void putTail(ByteBuffer buf) {
		buf.put(QQ.QQ_TAIL_BASIC_FAMILY);
    }

    /* (non-Javadoc)
     * @see edu.tsinghua.lumaqq.qq.packets.Packet#getPacketName()
     */
	@Override
    public String getPacketName() {
        return "Unknown Incoming Packet - 0x" + Integer.toHexString(command).toUpperCase();
    }
    
	/* (non-Javadoc)
	 * @see edu.tsinghua.lumaqq.qq.packets.Packet#decryptBody(byte[], int, int)
	 */
	@Override
	protected byte[] decryptBody(byte[] buf, int offset, int len) {
	    byte[] temp = null;
	    switch(command) {
	        case QQ.QQ_CMD_REQUEST_LOGIN_TOKEN:
	            byte[] undecrypted = new byte[len];
	        	System.arraycopy(buf, offset, undecrypted, 0, len);
	            return undecrypted;
	        case QQ.QQ_CMD_LOGIN:
		        temp = crypter.decrypt(buf, offset, len, user.getPasswordKey());
		        if(temp == null)
		            temp = crypter.decrypt(buf, offset, len, user.getInitKey());
		        return temp;
		    default:
		        if(user.getSessionKey() != null)
			        temp = crypter.decrypt(buf, offset, len, user.getSessionKey());
		        if(temp == null)
		            temp = crypter.decrypt(buf, offset, len, user.getPasswordKey());
		        return temp;
	    }
	}
	
	/* (non-Javadoc)
     * @see edu.tsinghua.lumaqq.qq.packets.Packet#encryptBody(byte[], int, int)
     */
	@Override
    protected byte[] encryptBody(byte[] b, int offset, int length) {
        return null;
    }
    
    /* (non-Javadoc)
     * @see edu.tsinghua.lumaqq.qq.packets.Packet#getBodyBytes(java.nio.ByteBuffer, int)
     */
	@Override
    protected byte[] getBodyBytes(ByteBuffer buf, int length) {
	    // 得到包體長度
	    int bodyLen = length - QQ.QQ_LENGTH_BASIC_FAMILY_IN_HEADER - QQ.QQ_LENGTH_BASIC_FAMILY_TAIL;
	    if(!user.isUdp()) bodyLen -= 2;	    
	    // 得到加密的包體內容
	    byte[] body = new byte[bodyLen]; 
	    buf.get(body);
	    return body;
    }
    
    /* (non-Javadoc)
     * @see edu.tsinghua.lumaqq.qq.packets.Packet#getLength(int)
     */
	@Override
    protected int getLength(int bodyLength) {
        return QQ.QQ_LENGTH_BASIC_FAMILY_IN_HEADER + QQ.QQ_LENGTH_BASIC_FAMILY_TAIL + bodyLength + (user.isUdp() ? 0 : 2);
    }
    
    /* (non-Javadoc)
     * @see edu.tsinghua.lumaqq.qq.packets.Packet#getHeadLength()
     */
	@Override
    protected int getHeadLength() {
        return QQ.QQ_LENGTH_BASIC_FAMILY_IN_HEADER + (user.isUdp() ? 0 : 2);
    }
    
    /* (non-Javadoc)
     * @see edu.tsinghua.lumaqq.qq.packets.Packet#getTailLength()
     */
	@Override
    protected int getTailLength() {
        return QQ.QQ_LENGTH_BASIC_FAMILY_TAIL;
    }    
    
    /* (non-Javadoc)
     * @see java.lang.Object#toString()
     */
	@Override
    public String toString() {
        return "包類型: " + Util.getCommandString(command) + " 序號: " + (int)sequence; 
    }
    
    /* (non-Javadoc)
     * @see edu.tsinghua.lumaqq.qq.packets.Packet#getCryptographStart()
     */
	@Override
    protected int getCryptographStart() {
        return -1;
    }
	
	@Override
	public int getFamily() {
		return QQ.QQ_PROTOCOL_FAMILY_BASIC;
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线观看日韩毛片| 中文字幕第一区综合| 久久久久97国产精华液好用吗| 亚洲欧洲美洲综合色网| 视频一区国产视频| www.日韩av| 久久综合九色欧美综合狠狠| 亚洲一区欧美一区| 成人晚上爱看视频| 欧美一级久久久久久久大片| 亚洲精品乱码久久久久久| 国产精品中文字幕日韩精品 | 成人激情综合网站| 欧美疯狂性受xxxxx喷水图片| 国产精品免费久久| 精品一区二区三区免费| 欧美精品免费视频| 亚洲午夜久久久久久久久久久| 国产91精品欧美| 国产日韩欧美综合一区| 精品午夜一区二区三区在线观看| 在线不卡一区二区| 亚洲成人午夜电影| www.色综合.com| 国产精品的网站| 成人高清视频免费观看| 中文字幕av不卡| 成人黄色免费短视频| 亚洲国产精品av| 成人免费毛片嘿嘿连载视频| 国产丝袜欧美中文另类| 国产一区二区在线看| 久久女同互慰一区二区三区| 国产专区综合网| 2020国产精品| 国产精品伊人色| 亚洲国产精品成人久久综合一区| 成人一区二区三区中文字幕| 国产精品国产三级国产aⅴ原创 | 亚洲黄色尤物视频| 日本道免费精品一区二区三区| 亚洲欧美电影院| 欧美丝袜丝nylons| 日韩av在线发布| 久久先锋影音av鲁色资源网| 国产成人av电影在线观看| 中文字幕 久热精品 视频在线 | 欧美激情在线一区二区三区| 国产成人aaa| 成人欧美一区二区三区黑人麻豆 | 亚洲精品va在线观看| 欧美羞羞免费网站| 蜜桃视频在线观看一区二区| 久久精品一区二区三区不卡| 99久久99久久精品免费观看| 亚洲国产日韩在线一区模特| 91精品福利在线一区二区三区 | 欧美一区二区在线免费观看| 麻豆国产精品视频| 国产精品色哟哟| 欧美日本精品一区二区三区| 精品综合久久久久久8888| 亚洲精品一区二区在线观看| 丰满少妇在线播放bd日韩电影| 伊人婷婷欧美激情| 欧美一级久久久久久久大片| 成人黄色国产精品网站大全在线免费观看 | 99久久婷婷国产综合精品电影| 亚洲综合一二区| 亚洲精品一区二区三区在线观看| 高潮精品一区videoshd| 亚洲一区二区欧美激情| 久久久久久一级片| 欧美日韩一区二区三区在线看| 国内精品伊人久久久久av影院 | 亚洲第一成年网| 国产午夜亚洲精品不卡| 欧美在线三级电影| 国产成人8x视频一区二区| 亚洲国产成人porn| 国产精品久久久久久久久搜平片| 欧洲精品在线观看| 风流少妇一区二区| 九九**精品视频免费播放| 一区二区三区精品| 国产精品久久久久久久久免费樱桃 | 国产日韩欧美精品综合| 欧美午夜电影一区| 不卡在线观看av| 久久99精品久久久| 午夜久久久久久久久 | 久久新电视剧免费观看| 欧美日韩国产综合久久 | 欧美久久久久久蜜桃| www..com久久爱| 国产乱国产乱300精品| 日本欧美肥老太交大片| 一区二区三区色| 亚洲私人黄色宅男| 亚洲国产精品激情在线观看| 337p日本欧洲亚洲大胆色噜噜| 欧美熟乱第一页| 欧美中文字幕一二三区视频| caoporen国产精品视频| 国产91丝袜在线播放0| 国产一区二区在线看| 九色综合狠狠综合久久| 久久69国产一区二区蜜臀| 亚洲成人你懂的| 天天射综合影视| 日本少妇一区二区| 日韩国产精品大片| 日本亚洲三级在线| 奇米色一区二区| 精品一区二区影视| 国产麻豆一精品一av一免费| 国产寡妇亲子伦一区二区| 国产在线精品视频| 国产精品亚洲第一区在线暖暖韩国| 久久99精品国产.久久久久| 黑人精品欧美一区二区蜜桃| 韩日av一区二区| 处破女av一区二区| 99久久精品免费精品国产| 91免费看视频| 欧美午夜电影一区| 日韩午夜激情电影| 国产亚洲精品bt天堂精选| 国产精品欧美一区喷水| 亚洲免费在线看| 五月婷婷综合在线| 久久99精品久久久久| 国产成人在线观看免费网站| 99精品国产视频| 欧美日韩久久久| 欧美大片在线观看一区二区| 久久久精品日韩欧美| 综合久久久久综合| 日韩电影在线一区二区三区| 九九**精品视频免费播放| 国产·精品毛片| 欧美日韩一区二区在线观看| 欧美大片在线观看一区| 国产精品午夜在线| 亚洲一区免费在线观看| 国产一区在线精品| 色诱视频网站一区| 日韩欧美亚洲另类制服综合在线| 久久久精品免费网站| 亚洲综合一区二区| 国产在线精品一区在线观看麻豆| 99精品视频在线播放观看| 在线成人免费观看| 亚洲欧洲日韩一区二区三区| 婷婷综合五月天| 成人av动漫在线| 日韩免费在线观看| 亚洲黄色av一区| 国产乱子轮精品视频| 欧美无砖专区一中文字| 国产亚洲欧美中文| 五月激情综合婷婷| av电影天堂一区二区在线| 欧美一区二区性放荡片| |精品福利一区二区三区| 免费在线观看一区二区三区| 91片黄在线观看| 久久亚洲精精品中文字幕早川悠里| 亚洲伊人色欲综合网| 国产成人精品影院| 精品日韩一区二区三区 | 欧美高清视频一二三区| 亚洲欧洲精品一区二区三区不卡| 久久成人免费网| 欧美三日本三级三级在线播放| 日本一区二区成人| 国产一区二区剧情av在线| 欧美伦理影视网| 一区二区三区高清在线| 国产福利一区二区三区| 欧美一二三区在线| 亚洲成人免费影院| 在线观看亚洲精品| 亚洲视频你懂的| 不卡高清视频专区| 国产蜜臀av在线一区二区三区| 麻豆精品视频在线观看免费| 欧美特级限制片免费在线观看| 亚洲欧美在线aaa| 成人一级视频在线观看| 国产调教视频一区| 国产精品一区二区你懂的| 精品国产一区二区三区忘忧草| 视频一区在线视频| 欧美日韩精品一区二区| 亚洲美女少妇撒尿| 欧美午夜影院一区| 亚洲大片在线观看| 欧美日韩成人一区| 五月天激情综合网|