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

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

?? outpacket.java

?? LUMAQQ源代碼 JAVA 地球人都知道
?? JAVA
字號:
/*
* LumaQQ - Java QQ Client
*
* Copyright (C) 2004 luma <stubma@163.com>
*                    notXX
*
* 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.beans.QQUser;
import edu.tsinghua.lumaqq.qq.debug.IDebugObject;
import edu.tsinghua.lumaqq.qq.debug.PacketDO;

/**
 * 所有輸出包基類,這個基類定義了輸出包的基本框架
 * 
 * @author luma
 */
public abstract class OutPacket extends Packet {
	/** 包起始序列號 */
	protected static char seq = (char) Util.random().nextInt();
	/** 是否需要回應 */
	protected boolean ack;
	/** 重發計數器 */
	protected int resendCountDown;
	/** 超時截止時間,單位ms */
	protected long timeout;
	/** 發送次數,只在包是不需要ack時有效,比如logout包是發4次,但是其他可能只發一次 */
	protected int sendCount;
	
	/** 加密/解密密鑰,只有有些包可能需要一個特定的密鑰,如果為null,使用缺省的 */
	protected byte[] key;
   
    /**
     * 創建一個基本輸出包
     * 
     * @param command
     * 		包命令
     * @param ack
     * 		包是否需要回復
     * @param user
     * 		QQ用戶對象
     */
    public OutPacket(byte header, char command, boolean ack, QQUser user) {
		super(header, QQ.QQ_CLIENT_VERSION, command, getNextSeq(), user);
		this.ack = ack;
		this.resendCountDown = QQ.QQ_SEND_TIME_NOACK_PACKET;
		this.sendCount = 1;
    }    
    
	/**
	 * 從buf中構造一個OutPacket,用于調試。這個buf里面可能包含了抓包軟件抓來的數據
	 * 
	 * @param buf
	 * 			ByteBuffer
	 * @throws PacketParseException
	 * 			解析出錯
	 */
	protected OutPacket(ByteBuffer buf, QQUser user) throws PacketParseException {
	    super(buf, user);
	}

	/**
	 * 從buf中構造一個OutPacket,用于調試。這個buf里面可能包含了抓包軟件抓來的數據
	 * 
	 * @param buf
	 * 			ByteBuffer
	 * @param length
	 * 			要解析的內容長度
	 * @throws PacketParseException
	 * 			如果解析出錯
	 */
	protected OutPacket(ByteBuffer buf, int length, QQUser user) throws PacketParseException {
	    super(buf, length, user);
	}		
	
	/* (non-Javadoc)
     * @see edu.tsinghua.lumaqq.qq.packets.Packet#parseBody(java.nio.ByteBuffer)
     */
	@Override
    protected void parseBody(ByteBuffer buf) throws PacketParseException {
    }
    
	/**
	 * 回填,有些字段必須填完整個包才能確定其內容,比如長度字段,那么這個方法將在
	 * 尾部填充之后調用
	 * 
	 * @param buf
	 * 		ByteBuffer
	 * @param startPos
	 * 		包起始位置
	 */
	protected abstract void postFill(ByteBuffer buf, int startPos);
	
    /**
	 * 將整個包轉化為字節流, 并寫入指定的ByteBuffer對象.
	 * 一般而言, 前后分別需要寫入包頭部和包尾部.
	 * 
	 * @param buf
	 * 		將包寫入的ByteBuffer對象.
	 */
	public void fill(ByteBuffer buf) {
	    // 保存當前pos
	    int pos = buf.position();
	    // 填充頭部
	    putHead(buf);
	    // 填充包體
	    bodyBuf.clear();
	    putBody(bodyBuf);
	    bodyBuf.flip();
	    // 加密包體
	    bodyDecrypted = new byte[bodyBuf.limit()];
	    System.arraycopy(bodyBuf.array(), 0, bodyDecrypted, 0, bodyDecrypted.length);
	    byte[] enc = encryptBody(bodyDecrypted, 0, bodyDecrypted.length);
	    // 加密內容寫入最終buf
	    buf.put(enc);
	    // 填充尾部
	    putTail(buf);
	    // 回填
	    postFill(buf, pos);
	    // 查看是否打開了調試模式,如果有,則觸發調試事件
	    if(ds.isDebug()) {
	        byte[] debugContent = dump();
	        IDebugObject obj = new PacketDO(getPacketName(), debugContent, false, getHeadLength(), debugContent.length - getTailLength());
	        ds.deliverDebugObject(obj);
	    }
	}
	
	@Override
	public byte[] dump() {
		if(bodyDecrypted == null)
			return new byte[0];
		else {
			byte[] debugContent = new byte[getLength(bodyDecrypted.length)];
			ByteBuffer debugBuf = ByteBuffer.wrap(debugContent);
			putHead(debugBuf);
			debugBuf.put(bodyDecrypted);
			putTail(debugBuf);
			postFill(debugBuf, 0);
			debugBuf = null;
			return debugContent;
		}
	}
	
    /**
	 * @return
	 * 		下一個可用的序列號
	 */
	protected static char getNextSeq() {
	    seq++;
	    // 為了兼容iQQ
	    // iQQ把序列號的高位都為0,如果為1,它可能會拒絕,wqfox稱是因為TX是這樣做的
	    seq &= 0x7FFF;
	    if(seq == 0)
	        seq++;
	    return seq;
	}	
	
	/* (non-Javadoc)
     * @see edu.tsinghua.lumaqq.qq.packets.Packet#getPacketName()
     */
	@Override
    public String getPacketName() {
        return "Unknown Outcoming Packet";
    }
	
	/**
	 * 是否需要重發.
	 * 
	 * @return 需要重發返回true, 否則返回false.
	 */
	public final boolean needResend() {
		return (resendCountDown--) > 0;
	}
	
	/**
	 * @return true表示包需要回復
	 */
	public final boolean needAck() {
	    return ack;
	}
	
    /**
     * @return Returns the timeout.
     */
    public final long getTimeout() {
        return timeout;
    }
    
    /**
     * @param timeout The timeout to set.
     */
    public final void setTimeout(long timeout) {
        this.timeout = timeout;
    }
    
    /**
     * @param sendCount The sendCount to set.
     */
    public final void setSendCount(int sendCount) {
        this.sendCount = sendCount;
    }
    
    /**
     * @return Returns the sendCount.
     */
    public final int getSendCount() {
        return sendCount;
    }
    
    /**
     * @return Returns the key.
     */
    public byte[] getKey() {
        return key;
    }
    
    /**
     * @param key The key to set.
     */
    public void setKey(byte[] key) {
        this.key = key;
    }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩中文字幕不卡| 欧美性感一区二区三区| 欧美中文一区二区三区| 国产综合久久久久久久久久久久| 亚洲一区二区三区中文字幕| 麻豆精品视频在线观看视频| 97se亚洲国产综合自在线| 日韩三级视频中文字幕| 欧美一卡二卡在线观看| 日韩一级免费观看| 亚洲男人的天堂在线aⅴ视频| 寂寞少妇一区二区三区| 国产一区二区成人久久免费影院| 久久se精品一区二区| 欧美三级电影网| 欧美一区二区三区影视| 日韩理论片网站| 国产成人精品www牛牛影视| 高清国产一区二区| 国产亚洲视频系列| 国产专区欧美精品| 久久亚洲综合色一区二区三区| 亚洲成va人在线观看| 在线观看亚洲a| 樱花草国产18久久久久| 日本亚洲视频在线| 91精品国产欧美一区二区成人| 亚洲成人777| 国产精品99久久久久久似苏梦涵| 99久久综合国产精品| 日本一区二区三区在线不卡| 一区二区三区四区中文字幕| caoporm超碰国产精品| 欧美激情一区二区三区全黄| 成人精品高清在线| 国产精品色噜噜| 成人高清视频免费观看| 欧美日韩精品是欧美日韩精品| 日韩精品一区二区在线观看| 国产精品久久夜| 99热精品一区二区| 亚洲福利视频三区| 成人毛片视频在线观看| 欧美精品三级日韩久久| 日韩中文字幕一区二区三区| 制服丝袜亚洲色图| 国产精品超碰97尤物18| 免费成人在线观看| 99re热视频精品| 亚洲人亚洲人成电影网站色| 在线观看www91| 国产午夜精品一区二区三区嫩草| 国产精品66部| 亚洲女人小视频在线观看| 狠狠色丁香九九婷婷综合五月| 91免费版pro下载短视频| 亚洲国产日韩在线一区模特| 91麻豆精品国产91久久久资源速度 | 国产亚洲欧美激情| 亚洲超丰满肉感bbw| 日韩免费性生活视频播放| 国产乱对白刺激视频不卡| 欧美日韩一二三| 亚洲欧美在线另类| 国产精品一区二区91| 亚洲欧美一区二区三区国产精品 | 国产91精品久久久久久久网曝门 | 日韩一区欧美二区| 91视频免费播放| 日韩av电影免费观看高清完整版在线观看 | 久久久久久久电影| 视频一区二区三区中文字幕| 不卡在线观看av| 久久久国际精品| 欧美三级电影网| 粉嫩蜜臀av国产精品网站| 精品国产乱码久久久久久久| 日韩中文字幕区一区有砖一区 | 国产精品少妇自拍| 国产精一区二区三区| 亚洲一线二线三线视频| 99国产精品一区| 国产精品久久久爽爽爽麻豆色哟哟| 国产一区二区精品久久99| 精品国产污污免费网站入口| 色综合夜色一区| 亚洲欧美另类图片小说| www.99精品| 国产成人免费视频一区| 日韩激情在线观看| 亚洲精品国产精华液| 国产欧美精品国产国产专区| 日韩欧美在线网站| 欧美日韩中文字幕一区二区| 成人黄色a**站在线观看| 久久精品国产精品亚洲红杏| 亚洲一区二区三区视频在线播放| 欧美激情一区在线| 久久天堂av综合合色蜜桃网| 欧美二区在线观看| 欧美日韩国产色站一区二区三区| 91性感美女视频| 成人激情av网| 一区二区理论电影在线观看| 国产亚洲制服色| 久久久久9999亚洲精品| 欧美精品一区二区三区蜜臀| 日韩三级视频在线看| 欧美一级夜夜爽| 日韩三级电影网址| 日韩一级完整毛片| 日韩欧美一区中文| 日韩一级免费一区| 91麻豆自制传媒国产之光| 丰满放荡岳乱妇91ww| 国产传媒久久文化传媒| 国产成人免费视频| 国产成人综合亚洲91猫咪| 国产精品99久久久久久有的能看| 国产精品亚洲第一区在线暖暖韩国 | 国产裸体歌舞团一区二区| 国产精品久久久久久久浪潮网站| 91网址在线看| 欧美制服丝袜第一页| 欧美日韩精品电影| 欧美一区欧美二区| 精品国产一区二区三区四区四| 成人一级视频在线观看| 亚洲一二三区在线观看| 欧美v国产在线一区二区三区| 播五月开心婷婷综合| 日韩精品成人一区二区三区| 日韩国产精品91| 最新国产精品久久精品| 亚洲欧美另类综合偷拍| 久久青草国产手机看片福利盒子| 久久亚洲二区三区| 国产精品色在线观看| 亚洲综合在线免费观看| 日韩成人伦理电影在线观看| 久久国产人妖系列| 99久久综合精品| 6080日韩午夜伦伦午夜伦| 精品国产免费久久| 国产精品成人网| 日韩国产欧美三级| 亚洲精品v日韩精品| 五月天激情综合| 国产精品影视在线观看| 97国产一区二区| 欧美高清性hdvideosex| 欧美午夜精品久久久久久超碰| 欧美日韩国产一区| 欧美日韩综合色| 色婷婷综合在线| 大尺度一区二区| 91麻豆精品国产自产在线| 国产欧美综合在线| 久久综合丝袜日本网| 欧美丰满嫩嫩电影| 国产区在线观看成人精品| 午夜婷婷国产麻豆精品| 国产98色在线|日韩| 欧美日韩国产在线观看| 欧美三级资源在线| 国产精品视频一二三区| 日韩av在线免费观看不卡| 成人免费看片app下载| 欧美电影免费提供在线观看| 91精品在线免费观看| 欧美精品第一页| 亚洲欧美在线aaa| 国产真实乱偷精品视频免| 久久99国产精品久久99| 欧美日韩国产美女| 欧美一级生活片| 伊人一区二区三区| 成人高清免费观看| 色网综合在线观看| 精品视频1区2区3区| 亚洲欧洲一区二区三区| 一个色在线综合| 午夜日韩在线电影| 美女一区二区久久| 国产真实乱对白精彩久久| 懂色中文一区二区在线播放| 欧美岛国在线观看| 亚洲123区在线观看| 在线日韩av片| 日韩欧美一级二级三级久久久| 一区二区三区四区精品在线视频| 亚洲永久免费视频| 色综合激情五月| 日韩理论电影院| 99国产欧美久久久精品| 中文字幕日本不卡| 色综合天天狠狠| 亚洲一区二区三区精品在线| 日本精品视频一区二区| 亚洲男人的天堂在线观看|