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

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

?? basicfamilyparser.java

?? LUMAQQ源代碼 JAVA 地球人都知道
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
/*
* LumaQQ - Java QQ Client
*
* Copyright (C) 2004 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.beans.QQUser;
import edu.tsinghua.lumaqq.qq.packets.in.AddFriendAuthResponseReplyPacket;
import edu.tsinghua.lumaqq.qq.packets.in.AddFriendExReplyPacket;
import edu.tsinghua.lumaqq.qq.packets.in.AdvancedSearchUserReplyPacket;
import edu.tsinghua.lumaqq.qq.packets.in.AuthorizeReplyPacket;
import edu.tsinghua.lumaqq.qq.packets.in.ChangeStatusReplyPacket;
import edu.tsinghua.lumaqq.qq.packets.in.ClusterCommandReplyPacket;
import edu.tsinghua.lumaqq.qq.packets.in.DeleteFriendReplyPacket;
import edu.tsinghua.lumaqq.qq.packets.in.DownloadGroupFriendReplyPacket;
import edu.tsinghua.lumaqq.qq.packets.in.FriendChangeStatusPacket;
import edu.tsinghua.lumaqq.qq.packets.in.FriendDataOpReplyPacket;
import edu.tsinghua.lumaqq.qq.packets.in.FriendLevelOpReplyPacket;
import edu.tsinghua.lumaqq.qq.packets.in.GetFriendListReplyPacket;
import edu.tsinghua.lumaqq.qq.packets.in.GetOnlineOpReplyPacket;
import edu.tsinghua.lumaqq.qq.packets.in.GetTempClusterOnlineMemberReplyPacket;
import edu.tsinghua.lumaqq.qq.packets.in.GetUserInfoReplyPacket;
import edu.tsinghua.lumaqq.qq.packets.in.GroupDataOpReplyPacket;
import edu.tsinghua.lumaqq.qq.packets.in.KeepAliveReplyPacket;
import edu.tsinghua.lumaqq.qq.packets.in.LoginReplyPacket;
import edu.tsinghua.lumaqq.qq.packets.in.ModifyInfoReplyPacket;
import edu.tsinghua.lumaqq.qq.packets.in.PrivacyDataOpReplyPacket;
import edu.tsinghua.lumaqq.qq.packets.in.ReceiveIMPacket;
import edu.tsinghua.lumaqq.qq.packets.in.RemoveSelfReplyPacket;
import edu.tsinghua.lumaqq.qq.packets.in.RequestKeyReplyPacket;
import edu.tsinghua.lumaqq.qq.packets.in.RequestLoginTokenReplyPacket;
import edu.tsinghua.lumaqq.qq.packets.in.SearchUserReplyPacket;
import edu.tsinghua.lumaqq.qq.packets.in.SendIMReplyPacket;
import edu.tsinghua.lumaqq.qq.packets.in.SendSMSReplyPacket;
import edu.tsinghua.lumaqq.qq.packets.in.SignatureOpReplyPacket;
import edu.tsinghua.lumaqq.qq.packets.in.SystemNotificationPacket;
import edu.tsinghua.lumaqq.qq.packets.in.TempSessionOpReplyPacket;
import edu.tsinghua.lumaqq.qq.packets.in.UnknownInPacket;
import edu.tsinghua.lumaqq.qq.packets.in.UploadGroupFriendReplyPacket;
import edu.tsinghua.lumaqq.qq.packets.in.UserPropertyOpReplyPacket;
import edu.tsinghua.lumaqq.qq.packets.in.WeatherOpReplyPacket;
import edu.tsinghua.lumaqq.qq.packets.out.AddFriendAuthResponsePacket;
import edu.tsinghua.lumaqq.qq.packets.out.AddFriendExPacket;
import edu.tsinghua.lumaqq.qq.packets.out.AdvancedSearchUserPacket;
import edu.tsinghua.lumaqq.qq.packets.out.AuthorizePacket;
import edu.tsinghua.lumaqq.qq.packets.out.ChangeStatusPacket;
import edu.tsinghua.lumaqq.qq.packets.out.ClusterCommandPacket;
import edu.tsinghua.lumaqq.qq.packets.out.DeleteFriendPacket;
import edu.tsinghua.lumaqq.qq.packets.out.DownloadGroupFriendPacket;
import edu.tsinghua.lumaqq.qq.packets.out.FriendDataOpPacket;
import edu.tsinghua.lumaqq.qq.packets.out.FriendLevelOpPacket;
import edu.tsinghua.lumaqq.qq.packets.out.GetFriendListPacket;
import edu.tsinghua.lumaqq.qq.packets.out.GetOnlineOpPacket;
import edu.tsinghua.lumaqq.qq.packets.out.GetUserInfoPacket;
import edu.tsinghua.lumaqq.qq.packets.out.GroupDataOpPacket;
import edu.tsinghua.lumaqq.qq.packets.out.KeepAlivePacket;
import edu.tsinghua.lumaqq.qq.packets.out.LoginPacket;
import edu.tsinghua.lumaqq.qq.packets.out.LogoutPacket;
import edu.tsinghua.lumaqq.qq.packets.out.ModifyInfoPacket;
import edu.tsinghua.lumaqq.qq.packets.out.PrivacyDataOpPacket;
import edu.tsinghua.lumaqq.qq.packets.out.ReceiveIMReplyPacket;
import edu.tsinghua.lumaqq.qq.packets.out.RemoveSelfPacket;
import edu.tsinghua.lumaqq.qq.packets.out.RequestKeyPacket;
import edu.tsinghua.lumaqq.qq.packets.out.RequestLoginTokenPacket;
import edu.tsinghua.lumaqq.qq.packets.out.SearchUserPacket;
import edu.tsinghua.lumaqq.qq.packets.out.SendIMPacket;
import edu.tsinghua.lumaqq.qq.packets.out.SendSMSPacket;
import edu.tsinghua.lumaqq.qq.packets.out.SignatureOpPacket;
import edu.tsinghua.lumaqq.qq.packets.out.TempSessionOpPacket;
import edu.tsinghua.lumaqq.qq.packets.out.UnknownOutPacket;
import edu.tsinghua.lumaqq.qq.packets.out.UploadGroupFriendPacket;
import edu.tsinghua.lumaqq.qq.packets.out.UserPropertyOpPacket;
import edu.tsinghua.lumaqq.qq.packets.out.WeatherOpPacket;

/**
 * 基本協議族解析器
 * 
 * @author luma
 */
public class BasicFamilyParser implements IParser {    
	private int offset;
	private int length;
	
	private PacketHistory history;

	public BasicFamilyParser() {
		history = new PacketHistory();
	}
    
	/* (non-Javadoc)
	 * @see edu.tsinghua.lumaqq.qq.packets.IParser#accept(java.nio.ByteBuffer)
	 */
	public boolean accept(ByteBuffer buf) {
		// 保存偏移
		offset = buf.position();
		int bufferLength = buf.limit() - buf.position();
		if(bufferLength <= 0)
		    return false;
		
		boolean accept = checkTcp(buf);
		if(!accept)
		    accept = checkUdp(buf);
		
		return accept;
	}
	
	/**
	 * 檢查一個包是否是udp包
	 * 
	 * @param buf
	 * 		ByteBuffer
	 * @return
	 * 		true表示是,false表示否
	 */
	private boolean checkUdp(ByteBuffer buf) {
		if(buf.get(offset) == QQ.QQ_HEADER_BASIC_FAMILY) {
			// 首先檢查是否UDP方式
		    length = buf.limit() - buf.position();
		    if(buf.get(offset + length - 1) == QQ.QQ_TAIL_BASIC_FAMILY) 
		    	return true;
		}
		return false;
	}
	
	/**
	 * 檢查一個包是否是tcp包
	 * 
	 * @param buf
	 * 		ByteBuffer
	 * @return
	 * 		true表示是
	 */
	private boolean checkTcp(ByteBuffer buf) {
	    // buffer length不大于2則連個長度字段都沒有
		int bufferLength = buf.limit() - buf.position();
		if(bufferLength < 2)
		    return false;
		
		// 如果可讀內容小于包長,則這個包還沒收完
        length = buf.getChar(offset);
        if(length <= 0 || length > bufferLength)
            return false;
                    
        // 再檢查包頭包尾
        if(buf.get(offset + 2) == QQ.QQ_HEADER_BASIC_FAMILY) {
            if(buf.get(offset + length - 1) == QQ.QQ_TAIL_BASIC_FAMILY) 
            	return true;
        }	        
        
        return false;
	}
	
    public int getLength(ByteBuffer buf) {
        return length;
    }
    
	public boolean isDuplicate(InPacket in) {
		return history.check(in, true);
	}

	/**
     * 得到包的命令和序號
     * 
     * @param buf
     */
    private char getCommand(ByteBuffer buf, QQUser user) {
	    if(!user.isUdp()) {
	        return buf.getChar(offset + 5);
	    } else {
	        return buf.getChar(offset + 3);
	    }
    }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人综合在线| 99热精品国产| 制服丝袜国产精品| 亚洲少妇最新在线视频| 国产精品亚洲视频| 日韩欧美一区二区免费| 亚洲午夜在线观看视频在线| thepron国产精品| 国产午夜一区二区三区| 极品少妇一区二区| 亚洲精品一区二区三区在线观看| 日本午夜精品一区二区三区电影| 欧美日韩中文字幕一区二区| 亚洲精品伦理在线| 欧美亚洲另类激情小说| 日韩毛片一二三区| 亚洲美女免费视频| 不卡欧美aaaaa| 国产欧美日韩在线视频| 午夜精品福利一区二区三区av| 欧美综合一区二区三区| 1000精品久久久久久久久| 不卡一区二区三区四区| 综合色天天鬼久久鬼色| 色综合色综合色综合色综合色综合 | 日韩一区欧美小说| 91在线观看视频| 亚洲欧美视频在线观看视频| 一本色道a无线码一区v| 一区二区国产盗摄色噜噜| 精品视频在线免费| 天天综合天天综合色| 欧美一区二区三区视频| 精品一区二区在线播放| 久久久久久久久久久电影| 国产精品一二三四五| 国产精品久久久久一区二区三区共| 99精品欧美一区| 午夜激情一区二区三区| 亚洲精品久久7777| 在线国产电影不卡| 日韩1区2区3区| 久久伊99综合婷婷久久伊| 一区二区三区四区在线播放| 国产欧美视频一区二区| 日韩精品亚洲一区| 精品99一区二区三区| 国产激情一区二区三区四区 | 精品国产第一区二区三区观看体验| 精彩视频一区二区| 国产精品高潮呻吟| 欧美日韩成人高清| 国产美女精品人人做人人爽| 亚洲免费观看高清完整版在线观看 | 亚洲免费在线播放| 91精品在线免费| 国产91精品一区二区麻豆网站| 亚洲色欲色欲www在线观看| 欧美日本免费一区二区三区| 国产专区综合网| 亚洲自拍欧美精品| 精品国产1区二区| 一本一道久久a久久精品综合蜜臀| 日韩精品亚洲一区| 国产精品久久久久桃色tv| 欧美绝品在线观看成人午夜影视| 国产精品资源在线看| 樱桃视频在线观看一区| 欧美xxxx在线观看| 在线观看区一区二| 狠狠色狠狠色综合| 一区二区三区日韩精品视频| 91麻豆精品久久久久蜜臀| 亚洲欧美日韩小说| 91视视频在线直接观看在线看网页在线看| 亚洲午夜精品网| 国产亚洲一区二区三区| 欧美亚洲国产一区二区三区va| 国产最新精品免费| 一区二区三区精品久久久| 精品日产卡一卡二卡麻豆| 亚洲精品伦理在线| 国产中文字幕精品| 欧美一卡二卡三卡四卡| 成人18精品视频| 麻豆国产欧美日韩综合精品二区| 亚洲精品中文在线影院| 精品国产不卡一区二区三区| 91免费在线视频观看| 精品一区二区三区日韩| 亚洲影院免费观看| 欧美国产一区视频在线观看| 欧美一区二区三区系列电影| 色综合婷婷久久| 国产精品一区在线观看乱码 | 亚洲素人一区二区| 精品国产乱码久久久久久久久 | 久久综合狠狠综合久久综合88| 欧美艳星brazzers| 99精品黄色片免费大全| 国产精品一级片| 免费观看久久久4p| 亚洲狠狠丁香婷婷综合久久久| 国产欧美精品一区二区三区四区| 亚洲天堂免费看| 国产亚洲精品久| 欧美成人r级一区二区三区| 欧美日韩久久一区| 91免费视频网| 成人av先锋影音| 韩国成人福利片在线播放| 美女尤物国产一区| 日韩精品一二三四| 亚洲二区视频在线| 亚洲午夜日本在线观看| 亚洲柠檬福利资源导航| 国产精品视频第一区| 久久精品欧美日韩| 久久人人97超碰com| 日韩欧美国产小视频| 91精品国产91久久综合桃花| 欧美日韩精品一区二区三区四区 | 伦理电影国产精品| 日日骚欧美日韩| 视频一区在线播放| 丝袜美腿一区二区三区| 五月天婷婷综合| 丝瓜av网站精品一区二区| 亚洲成人手机在线| 亚洲午夜在线视频| 亚洲va韩国va欧美va精品| 亚洲福利一二三区| 午夜婷婷国产麻豆精品| 午夜精品久久久久久久久久久| 亚洲一区二区黄色| 午夜电影久久久| 日本免费新一区视频| 蜜臀av性久久久久av蜜臀妖精| 麻豆91免费观看| 国产永久精品大片wwwapp | 久久国产精品99久久久久久老狼 | 精品在线一区二区| 久久国产成人午夜av影院| 精品一区二区免费在线观看| 激情综合色综合久久综合| 国产一区在线观看麻豆| 国产精品系列在线观看| 成人高清免费在线播放| av电影天堂一区二区在线观看| 91在线精品一区二区三区| 日本精品裸体写真集在线观看 | 欧美一级在线视频| 欧美成人三级电影在线| 精品国产乱码久久久久久1区2区| www激情久久| 国产视频亚洲色图| 亚洲欧美在线观看| 亚洲综合在线五月| 日韩vs国产vs欧美| 亚洲视频在线观看一区| 亚洲桃色在线一区| 欧美激情在线观看视频免费| 亚洲三级在线免费| 亚洲伊人伊色伊影伊综合网| 青娱乐精品视频| 欧美精品日韩精品| 日韩午夜激情av| 国产丝袜欧美中文另类| 亚洲视频在线一区二区| 日韩二区三区在线观看| 激情图区综合网| 99久久精品情趣| 欧美老年两性高潮| 精品国产乱码久久久久久闺蜜| 国产精品美女久久久久久久网站| 亚洲免费av观看| 日本不卡视频在线| 成人免费三级在线| 欧美日韩中文字幕一区| 久久综合久久综合久久| 亚洲免费在线电影| 美女脱光内衣内裤视频久久影院| 国产精品影视网| 欧美影院一区二区三区| 91精品国产综合久久久久久漫画| 精品日韩在线一区| 欧美日韩在线亚洲一区蜜芽| 日韩欧美黄色影院| 国产精品你懂的在线欣赏| 亚洲国产成人91porn| 国产精品99久久久久久似苏梦涵 | 一区二区三区自拍| 蜜桃av一区二区在线观看| 成人av网站免费| 欧美人伦禁忌dvd放荡欲情| 中文字幕不卡在线观看| 天涯成人国产亚洲精品一区av| 国产91综合一区在线观看| 欧美日韩国产bt| 中文字幕+乱码+中文字幕一区|