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

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

?? lpackage.cpp

?? <VC++網絡游戲建摸與實現>源代碼
?? CPP
字號:
// LPackage.cpp: implementation of the CLPackage class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "LPackage.h"

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
//#include <Winsock2.h>

//##ModelId=3E795F870360
CLPackage::CLPackage()
{
	lLenWordPos =4;//設置報文中放長度的long的位置
	lPackHeadLen =12;  //報文全長=PACK_HEAD_LEN + 報文中標記長度
	InitPack();
}

//##ModelId=3E795F87036A
CLPackage::~CLPackage()
{

}

//##ModelId=3E795F87034F
void CLPackage::InitPack()
{
	memset(m_szBuf,0,PACK_BUF_SIZE);//緩沖區
	m_lBufLen=0;
}

//##ModelId=3E795F87034C
long CLPackage::SetBuffer(char *szBuf, long lBufLength)
{
	if((lBufLength>PACK_BUF_SIZE)||(szBuf==NULL))
		return false;
	m_lBufLen=lBufLength;
	memcpy(m_szBuf,szBuf,lBufLength);
	return true;
}

//##ModelId=3E795F87037E
long CLPackage::GetVar(char *szPointer, long lLength)
{
	if((lLength>PACK_BUF_SIZE)||(lLength>m_lBufLen))
		return false;
	if(szPointer!=NULL)
		memcpy(szPointer,m_szBuf,lLength);
	memcpy(m_szBuf,m_szBuf+lLength,m_lBufLen-lLength);
	m_lBufLen-=lLength;
	return true;
}

//##ModelId=3E795F870339
unsigned long CLPackage::GetDword()
{
	unsigned long dTemp=0;
	GetVar((char*)&dTemp,sizeof(unsigned long));
	return htonl_my(dTemp);
}

//##ModelId=3E795F870338
unsigned short CLPackage::GetWord()
{
	unsigned short wTemp=0;
	GetVar((char*)&wTemp,sizeof(unsigned short));
	return htons_my(wTemp);
}

//##ModelId=3E795F87032F
int CLPackage::GetInt()
{
	int iTemp=0;
	GetVar((char*)&iTemp,sizeof(int));
	return htonl_my(iTemp);
}

//##ModelId=3E795F87032E
unsigned char CLPackage::GetByte()
{
	unsigned char Temp=0;
	GetVar((char*)&Temp,sizeof(unsigned char));
	return Temp;
}

//##ModelId=3E795F87031B
long CLPackage::GetStrByLen(char *szOut, long lLen)
{
	if(szOut!=NULL)
		szOut[lLen]=0;
	return GetVar(szOut,lLen);
}

//##ModelId=3E795F870309
long CLPackage::GetString(char *szOut,long lBufLen)
{
	bool bOK=false;
	int i=0;
	for(i=0;i<=m_lBufLen;i++)
	{
		if(m_szBuf[i]==0)
		{
			bOK=true;
			break;
		}
	}
	if((!bOK)||(i>=lBufLen))
		return false;
	szOut[i]=0;
	return GetVar(szOut,i+1);
}

//##ModelId=3E795F87036C
long CLPackage::PutVar(char *szData, long lLength)
{
	if(((lLength+m_lBufLen)>PACK_BUF_SIZE)||(szData==NULL))
	{
		InitPack();
		return false;
	}
	memcpy(m_szBuf+m_lBufLen,szData,lLength);
	m_lBufLen+=lLength;
	return true;
}

//##ModelId=3E795F870307
long CLPackage::SetByte(unsigned char cByte)
{
	return PutVar((char*)&cByte,sizeof(unsigned char));
}

//##ModelId=3E795F8702F3
long CLPackage::SetDword(unsigned long dData)
{
	dData=htonl_my(dData);
	return PutVar((char*)&dData,sizeof(unsigned long));

}

//##ModelId=3E795F8702E9
long CLPackage::SetWord(unsigned short dData)
{
	dData=htons_my(dData);
	return PutVar((char*)&dData,sizeof(unsigned short));

}

//##ModelId=3E795F8702DF
long CLPackage::SetInt(int iData)
{
	iData=htonl_my(iData);
	return PutVar((char*)&iData,sizeof(int));
}

//##ModelId=3E795F8702D4
long CLPackage::SetStr(char *szData)
{
	return PutVar(szData,strlen(szData));
}

//##ModelId=3E795F8702CB
char* CLPackage::GetBuf()
{
	return m_szBuf;
}

//##ModelId=3E795F8702CA
long CLPackage::GetLength()
{
	return m_lBufLen;
}

//##ModelId=3E795F8702B7
long CLPackage::SetStrByLen(char *szData, long lLength)
{
	if(szData==NULL)
	{
		m_lBufLen+=lLength;
		return false;
	}
	PutVar(szData,strlen(szData)+1);
	m_lBufLen+=lLength-strlen(szData)-1;
	return true;
}

//##ModelId=3E795F8702AD
long CLPackage::EndSetPackLen(long lLength)
{
	if(lLength==-1)
		lLength=m_lBufLen;
	lLength-=lPackHeadLen;
	long lTemp=htonl_my(lLength);
	memcpy(m_szBuf+lLenWordPos,(char*)&lTemp,sizeof(long));
	return true;
}

//##ModelId=3E795F8702A2
long CLPackage::AddBuf(char *szData, long lLen)
{
	return PutVar(szData,lLen);
}

//##ModelId=3E795F870299
long CLPackage::GetPackage(CLPackage &cPack)
{
	//printf("%s\n",m_szBuf);
	if(m_lBufLen<(lLenWordPos+4))
		return false;
	//=================
	long lFlag=0;
	memcpy(&lFlag,m_szBuf,4);
	lFlag=htonl_my(lFlag);
	if(lFlag!=GAME_MAGIC)
	{
		InitPack();
		return -1;
	}
	//======================
	long lLength=0;
	memcpy(&lLength,m_szBuf+lLenWordPos,4);
	lLength=htonl_my(lLength);
	lLength+=lPackHeadLen;//報文全長
	if(lLength>PACK_BUF_SIZE)//錯誤的報文
	{
		InitPack();
		return -1;
	}
	if(lLength>m_lBufLen)
		return false;
	char szTemp[PACK_BUF_SIZE];
	GetVar(szTemp,lLength);
	cPack.InitPack();
	cPack.SetBuffer(szTemp,lLength);
	return true;
}

//##ModelId=3E795F870284
long CLPackage::MakeHead(long lCommand,unsigned long lSque)
{///rebuild
	InitPack();
	SetInt(0);
	SetInt(htonl_my(lCommand));
	SetDword(htonl_my(NULL));
	SetDword(htonl_my(lSque));
	EndSetPackLen();
	return true;
}

//##ModelId=3E795F87027A
long CLPackage::SetStr2(char *szData)
{
	return PutVar(szData,strlen(szData)+1);
}

//##ModelId=3E795F870270
void CLPackage::Set(long lWordPos, long lHeadLen)
{
	lLenWordPos =lWordPos;//設置報文中放長度的long的位置
	lPackHeadLen =lHeadLen;  //報文全長=PACK_HEAD_LEN + 報文中標記長度
}

//##ModelId=3E795F870266
long CLPackage::htonl_my(long lTemp)
{
	byte* szPoint=(byte*)&lTemp;
	byte bTemp=szPoint[3];
	szPoint[3]=szPoint[0];
	szPoint[0]=bTemp;

	bTemp=szPoint[2];
	szPoint[2]=szPoint[1];
	szPoint[1]=bTemp;
	return lTemp;
}

//##ModelId=3E795F87025B
short CLPackage::htons_my(short sTemp)
{
	byte* szPoint=(byte*)&sTemp;
	byte bTemp=szPoint[1];
	szPoint[1]=szPoint[0];
	szPoint[0]=bTemp;
	return sTemp;
}

//##ModelId=3E795F870252
BOOL CLPackage::GetStringByByteLen(char *szBuf, long lBufLen)
{
	if(szBuf==NULL)
		return FALSE;
	long lLen=GetByte();
	if(lLen>lBufLen)
		return FALSE;
	return GetStrByLen(szBuf,lLen);
}

//##ModelId=3E795F870233
BOOL CLPackage::GetStringByShortLen(char *szBuf, long lBufLen)
{
	if(szBuf==NULL)
		return FALSE;
	long lLen=GetWord();
	if(lLen>lBufLen)
		return FALSE;
	return GetStrByLen(szBuf,lLen);
}

//##ModelId=3E795F87023D
BOOL CLPackage::GetStringByLongLen(char *szBuf, long lBufLen)
{
	if(szBuf==NULL)
		return FALSE;
	long lLen=GetDword();
	if(lLen>lBufLen)
		return FALSE;
	return GetStrByLen(szBuf,lLen);
}

//##ModelId=3E795F87022A
BOOL CLPackage::SetStringAndByteLen(char *szBuf)
{
	if(szBuf==NULL)
		return FALSE;
	long lLen=strlen(szBuf);
	if(lLen>255)
		return FALSE;
	SetByte((byte)lLen);
	return SetStrByLen(szBuf,lLen);
}

//##ModelId=3E795F870220
BOOL CLPackage::SetStringAndShortLen(char *szBuf)
{
	if(szBuf==NULL)
		return FALSE;
	long lLen=strlen(szBuf);
	SetWord((short)lLen);
	return SetStrByLen(szBuf,lLen);
}

//##ModelId=3E795F870215
BOOL CLPackage::SetStringAndLongLen(char *szBuf)
{
	if(szBuf==NULL)
		return FALSE;
	long lLen=strlen(szBuf);
	SetDword(lLen);
	return SetStrByLen(szBuf,lLen);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品视频123区在线观看| 久久99日本精品| 国产精品网站在线观看| 日韩写真欧美这视频| 7777精品伊人久久久大香线蕉经典版下载 | 色8久久精品久久久久久蜜| 大尺度一区二区| 成人永久aaa| 99r国产精品| 欧美系列在线观看| 欧美日韩美女一区二区| 欧美高清视频一二三区| 精品精品欲导航| 久久精品一区八戒影视| 国产精品午夜在线| 一区二区三区在线视频免费观看 | 欧美一级二级三级蜜桃| 91精品国产手机| 国产性天天综合网| 中文字幕中文字幕一区二区| 亚洲人吸女人奶水| 免费成人你懂的| 成人av在线网站| 在线观看网站黄不卡| 日韩av中文在线观看| 亚洲午夜私人影院| 精品一区二区三区在线观看| 成人一道本在线| 欧美亚洲国产怡红院影院| 777午夜精品视频在线播放| 26uuu欧美| 亚洲综合丝袜美腿| 国产麻豆一精品一av一免费| 99久久精品国产观看| 日韩视频一区在线观看| 国产精品高清亚洲| 精品亚洲porn| 欧美在线不卡一区| 久久久久久9999| 亚洲一区二区三区精品在线| 激情综合亚洲精品| 欧美日韩国产三级| 国产精品天美传媒沈樵| 乱一区二区av| 欧美亚洲丝袜传媒另类| 久久九九全国免费| 美日韩一区二区| 在线亚洲人成电影网站色www| 亚洲精品在线三区| 日韩精品一区第一页| 99久久精品情趣| www国产精品av| 天天色综合天天| aaa国产一区| 久久人人爽人人爽| 毛片不卡一区二区| 欧日韩精品视频| 椎名由奈av一区二区三区| 国产精品亚洲а∨天堂免在线| 9191成人精品久久| 夜夜嗨av一区二区三区| 大桥未久av一区二区三区中文| 精品动漫一区二区三区在线观看| 亚洲妇熟xx妇色黄| 日本高清不卡一区| 一区二区三区波多野结衣在线观看| 国产91精品一区二区麻豆亚洲| 日韩女优视频免费观看| 免费在线视频一区| 欧美高清视频一二三区| 天天影视涩香欲综合网| 777奇米四色成人影色区| 午夜伊人狠狠久久| 欧美精品aⅴ在线视频| 亚洲va国产天堂va久久en| 色猫猫国产区一区二在线视频| 国产精品精品国产色婷婷| 不卡的看片网站| 综合在线观看色| 色婷婷精品久久二区二区蜜臂av| 亚洲欧美日本在线| 欧美中文一区二区三区| 亚洲图片欧美色图| 日韩亚洲欧美一区二区三区| 日本亚洲欧美天堂免费| 91精选在线观看| 国产在线精品视频| 国产精品色呦呦| 99国产精品久久久久久久久久久| 亚洲免费观看在线视频| 在线这里只有精品| 久久爱www久久做| 日本一区二区在线不卡| 91免费视频观看| 婷婷成人激情在线网| 久久一日本道色综合| av在线综合网| 亚洲一区二区不卡免费| 日韩一级完整毛片| 高清国产午夜精品久久久久久| 国产精品福利一区二区三区| 欧美午夜理伦三级在线观看| 麻豆精品精品国产自在97香蕉| 久久精品视频一区二区| 色婷婷精品久久二区二区蜜臀av| 午夜精品久久久久久久蜜桃app| 欧美一级爆毛片| 99re6这里只有精品视频在线观看| 一个色综合av| 久久久久久电影| 欧美日韩一区二区三区视频| 免费黄网站欧美| 综合在线观看色| 精品99999| 欧洲一区在线电影| 国产麻豆91精品| 无吗不卡中文字幕| 中文字幕在线不卡| 日韩欧美国产系列| 在线影视一区二区三区| 国产传媒久久文化传媒| 日韩在线卡一卡二| 亚洲日韩欧美一区二区在线| 日韩视频免费直播| 欧美在线色视频| 成人av午夜电影| 黄一区二区三区| 婷婷成人综合网| 一区二区三区四区视频精品免费 | 成人国产精品免费| 免费高清成人在线| 婷婷六月综合网| 亚洲一区二区美女| 亚洲少妇最新在线视频| 久久久久国产一区二区三区四区 | 欧美一区二区三级| 在线中文字幕一区| 一本大道久久精品懂色aⅴ| 国产成人免费在线观看| 精品在线观看视频| 蜜臀国产一区二区三区在线播放 | 欧美精品一区二区三区在线| 欧亚洲嫩模精品一区三区| 99久久精品一区| 99久久伊人精品| 国产盗摄视频一区二区三区| 国产一区二区看久久| 激情综合五月天| 国产一区美女在线| 国产精选一区二区三区| 国产一区二区三区综合| 激情文学综合插| 狠狠色丁香婷婷综合| 国产精品综合一区二区| 国产精品亚洲成人| 成人免费视频视频| 91一区二区三区在线观看| 色婷婷久久久久swag精品| 在线观看亚洲成人| 欧美男生操女生| 日韩亚洲欧美成人一区| 日韩精品一区二区三区视频播放| 日韩一级成人av| 久久精品男人天堂av| 成人免费在线观看入口| 一区二区三区日韩精品视频| 有码一区二区三区| 日本va欧美va瓶| 国产一区 二区 三区一级| 国产1区2区3区精品美女| 97久久精品人人做人人爽50路| 94-欧美-setu| 欧美日韩国产成人在线免费| 91精品国模一区二区三区| 亚洲精品一区在线观看| 亚洲国产精品99久久久久久久久 | 在线不卡一区二区| 欧美xxxx在线观看| 国产精品进线69影院| 亚洲国产va精品久久久不卡综合| 日韩avvvv在线播放| 国产成人在线视频网站| 日本丶国产丶欧美色综合| 欧美美女一区二区| 国产欧美日韩在线| 午夜精品免费在线观看| 国产精品亚洲人在线观看| 在线日韩国产精品| 久久综合九色综合久久久精品综合| 国产视频不卡一区| 香蕉影视欧美成人| 成人午夜视频在线观看| 欧美久久一二区| 国产精品久久毛片| 七七婷婷婷婷精品国产| 97se亚洲国产综合自在线观| 日韩视频免费观看高清完整版在线观看 | 日韩一级精品视频在线观看| 中文字幕日韩精品一区| 久久99精品久久只有精品|