⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cmpacket.h

📁 Soul的源代码,类似于劲舞团之类的游戏
💻 H
字号:
#ifndef  __MATRIX_Packet_H
#define  __MATRIX_Packet_H

#include <MatrixCore/Network/CMOverlapped.h>
#include <MatrixCore/System/CMObject.h>
#include <MatrixCore/System/CMString.h>
#include <ATLComTime.h>
#include <sqlext.h>

namespace MatrixCore
{
	namespace Network
	{
//#define		PACKETBUFFERSIZE	4096
#define		PACKETHEADERSIZE	12

#define		HEAD_ID_POISTION		0
#define		HEAD_SIZE_POISTION		2
#define		HEAD_MD5_POISTON		8
#define		DATA_POISTION			12
//----------------------------------------------------------------------------------------------------------------|
//											------------------------------------------------------------			
//											| 2byte(ID) | 2byte(data size) | 8byte (MD5) | 单捞鸥 农扁 |			
//											------------------------------------------------------------
//											2003.2.7老 荐沥 ->
//								-----------------------------------------------------------------------------------			
//								| 4byte( 霸烙 ID) | 2byte(data size) | 2byte (罚待 蔼)] 4byte (MD5) | 单捞鸥 农扁 |			
//								-----------------------------------------------------------------------------------
//	DESC	:: 庆歹 农扁绰 醚 12官捞飘捞促.. 鞠龋拳甫 困窍咯 8官捞飘甫 巢败 滴菌促.. 
//			   ID俊 蝶扼 鞠龋拳啊 搬沥登扁档 茄促. 捞悼鞍篮巴篮 鞠龋拳甫 窍瘤 富磊.
//----------------------------------------------------------------------------------------------------------------|
		typedef struct _HeaderA
		{
			unsigned short		ProtocolID_1:4;
			unsigned short		ProtocolID_2:4;
			unsigned short		ProtocolID_3:4;
			unsigned short		ProtocolID_4:4;
			unsigned short		GameType_1:4;			// 霸烙 皋技瘤
			unsigned short		GameType_2:4;			// 霸烙 皋技瘤
			unsigned short		GameType_3:4;			// 霸烙 皋技瘤
			unsigned short		GameType_4:4;			// 霸烙 皋技瘤
			
			unsigned short		DataSize_1:4;
			unsigned short		DataSize_2:4;
			unsigned short		DataSize_3:4;
			unsigned short		DataSize_4:4;

			unsigned short		ReplayDefence_1:4;		// 府敲饭捞 傍拜 力芭..
			unsigned short		ReplayDefence_2:4;		// 府敲饭捞 傍拜 力芭..
			unsigned short		ReplayDefence_3:4;		// 府敲饭捞 傍拜 力芭..
			unsigned short		ReplayDefence_4:4;		// 府敲饭捞 傍拜 力芭..
			unsigned int		VoidFunc;			// md5甫 持阑 积阿..
		} HEADERA,*LPHEADERA;

		typedef struct _HeaderTMP
		{
			unsigned short		Tmp_1:4;
			unsigned short		Tmp_2:4;
			unsigned short		Tmp_3:4;
			unsigned short		Tmp_4:4;
			unsigned short		Tmp_5:4;
			unsigned short		Tmp_6:4;
			unsigned short		Tmp_7:4;
			unsigned short		Tmp_8:4;
			unsigned short		Tmp_9:4;
			unsigned short		Tmp_10:4;
			unsigned short		Tmp_11:4;
			unsigned short		Tmp_12:4;
			unsigned short		Tmp_13:4;
			unsigned short		Tmp_14:4;
			unsigned short		Tmp_15:4;
			unsigned short		Tmp_16:4;
			unsigned int		pVoidFunc;			// md5甫 持阑 积阿..
		} HEADTMP,*LPHEADTMP;

		//庆歹 备炼眉..
		typedef struct _HeaderB
		{
			unsigned short		sProtocolEncode:1;
			unsigned short		sProtocolID:15;
			unsigned short		sGameType;			// 霸烙 皋技瘤
			unsigned short		sDataSize;
			unsigned short		sReplayDefence;		// 府敲饭捞 傍拜 力芭.. (罚待蔼)
			unsigned int		iVoidFunc;			// md5甫 持阑 积阿..
		} HEADERB,*LPHEADERB;

		//蜡聪柯栏肺 弓绢初篮 庆歹 牢器.. 傈何 12 官捞飘促..
		typedef union _HeaderInfo
		{
			HEADERA		headTmp1;					// 庆歹 备炼眉甫 距埃 部栏扁困茄 备炼眉
			HEADTMP		headTmp2;					// 庆歹 备炼眉甫 距埃 部栏扁困茄 备炼眉
			HEADERB		HeadInfo;					// 柳楼 庆歹 备炼眉
		}HEADERINFO,*LPHEADERINFO;

		//typedef struct _HeaderInfo
		//{
		//	unsigned short*		pProtocolID;
		//	unsigned short*		pDataSize;
		//	unsigned short*		pGameType;			// 霸烙 皋技瘤
		//	unsigned short*		pReplayDefence;		// 府敲饭捞 傍拜 力芭..
		//	unsigned int*		pVoidFunc;			// md5甫 持阑 积阿..
		//} HEADERINFO,*LPHEADINFO;


		class InvalidPacketException : public CMObject
		{
		};

		class CCHARPACK
		{
		public:
			//CHARPACK() {};
			CCHARPACK(char *pChar,int iSize)
			{
				m_char = pChar;
				m_iSize = iSize;
			}
			~CCHARPACK() {};

			char* m_char;
			int	 m_iSize;
		};


		class CMPacket// : public CMObject
		{
		public:
					CMPacket();
					CMPacket(bool bNullPacket);
					CMPacket( char * ReadBuf, int buffsize );
			virtual ~CMPacket();

					bool			IsValidHeader();
					bool			IsValidPacket();

					void GetHeaderInfo(LPHEADERB pheadinfo);
					CMPacket& SetHeaderInfo(unsigned char cEncode,unsigned short ID
											,unsigned short sTypeID,unsigned short sReplayDefence);

					unsigned int SetProtocolID(unsigned short IdValue ,unsigned short GameType);

					unsigned short GetTypeID();
					CMPacket& TypeID( unsigned short ID );

					CMPacket&			SetID( unsigned short ID );
					unsigned short	GetID();

					unsigned short	GetRandomValue();
					CMPacket&		SetRandomValue( unsigned short sReplayDefenceRandom );

					unsigned short	GetDataFieldSize();
					int				GetPacketSize()
					{ 
						//return ( GetDataFieldSize() + PACKETHEADERSIZE );
						return m_iReceivedSize;
					}
					int				GetReceivedSize(){ return m_iReceivedSize; }
					
					void			Clear( int bufferSize );

					char*			GetPacketBuffer(){ return m_pPacketBuffer; }
					void			CopyToBuffer( char* buff, int iSize );
					
					// 季靛 焊尘 滚欺甫 檬扁拳 茄促.
					void SetInitBuff(char * WriteBuf,int buffsize );
					
					//庆歹 盒籍阑 困茄 窃荐..
					void			GetHeaderInfo(char* MemBuf,unsigned short *sId,unsigned short *sGameType,unsigned short *sDataSize,unsigned short *sRandomID);
					void			GetHeaderInfo(char* MemBuf,unsigned short *sId,unsigned short *sDataSize,unsigned short *sRandomID);

					void PackEncode(char* MemBuf = NULL);		// 菩哦 庆歹颇老阑 距埃 部栏扁 困茄 窃荐.
					BOOL PackDecode(char* MemBuf);				// 部牢 庆歹 颇老阑 促矫 叼内歹 窍扁 困茄 窃荐.

					void SetAddressWrite(void* buff,int iSize,int iAddressPoint);	// 单捞鸥甫 笼绢持绊 祈笼窍扁 困茄 窃荐.

					// 菩哦捞 肋给甸绢柯版快甫 魄窜窍扁困茄 风凭.
					static CMPacket	m_NullPacketClass;
					BOOL			bNullPack;
					BOOL			GetRecvCheck();

					CMPacket&	operator = ( CMPacket& packet );

					CMPacket&	operator << ( bool arg );
					CMPacket&	operator << ( short arg );
					CMPacket&	operator << ( int arg );
					CMPacket&	operator << ( long arg );
					CMPacket&	operator << ( DWORD arg );
					CMPacket&	operator << ( WORD arg );
					CMPacket&	operator << ( __int64 arg );
					CMPacket&	operator << ( LPTSTR arg );
					CMPacket&	operator << ( CMString arg );
					CMPacket&	operator << ( CMPacket& arg );
					CMPacket&	operator << ( DATE arg );
					CMPacket&	operator << ( TIMESTAMP_STRUCT arg );
					CMPacket&	operator << ( CCHARPACK& arg );
					CMPacket&	operator << ( SOCKET arg );
					CMPacket&	operator << ( void*  arg );
					CMPacket&	operator << ( byte arg );
					CMPacket&	operator << ( float arg );

					// 佬扁 困茄 窃荐甸.
					void SetReadData(char *pReadData,int iDataSize);
					
					CMPacket&	operator >> ( float& arg );
					CMPacket&	operator >> ( byte& arg );
					CMPacket&	operator >> ( void* arg );
					CMPacket&	operator >> ( SOCKET& arg );
					CMPacket&	operator >> ( CCHARPACK& arg );
					CMPacket&	operator >> ( DATE& arg );
					CMPacket&	operator >> ( TIMESTAMP_STRUCT& arg );
					CMPacket&	operator >> ( bool& arg );
					CMPacket&	operator >> ( short& arg );
					CMPacket&	operator >> ( int& arg );
					CMPacket&	operator >> ( long& arg );
					CMPacket&	operator >> ( WORD& arg );
					CMPacket&	operator >> ( DWORD& arg );
					CMPacket&	operator >> ( __int64& arg );
					CMPacket&	operator >> ( LPTSTR arg );
					CMPacket&	operator >> ( CMString& arg );
					CMPacket&	operator >> ( CMPacket& arg );

					BOOL		ReadData( void* buffer, int size )	throw ( InvalidPacketException* );	//单捞鸥 鞘靛俊辑 单捞鸥甫 哗柯促
					void		WriteData( void* buffer, int size ) throw ( InvalidPacketException* );	//
					
		protected:
					
					HEADERINFO		m_PacketHeader;
					LPHEADERB		m_PacketHeaderCast;
					char*		m_pPacketBuffer;
					char*		m_cDataField;				//	庆歹 第俊 单捞鸥 蔼..
					char*		m_cReadPosition;			//	
					char*		m_cWritePosition;			//
					char*		m_cEndOfDataField;
					int			m_iReceivedSize;
		};
	}
}
/*-------------------------------------------------------------------------------------------------------
庆歹 橇肺配妮 痹距
			unsigned short		sProtocolEncode:1;	// 庆歹狼 鞠龋拳 蜡公 1篮鞠龋拳.
			unsigned short		sProtocolID:15;		// 橇肺配妮俊 措茄 沥焊
			unsigned short		sGameType;			// 霸烙 皋技瘤 鸥涝 咯扁辑 庆歹 鞠龋拳 痹距 鞠龋拳俊 措茄 痹蘑阑 沥窍磊 抗) 圈荐绰 鞠龋拳, 娄荐绰 鞠龋拳 救凳.. <-- 喊风 救亮促.. ぞぞ 
			unsigned short		sDataSize;
			unsigned short		sReplayDefence;		// 府敲饭捞 傍拜 力芭.. (罚待蔼)
			unsigned int		iVoidFunc;			// md5甫 持阑 积阿..
橇肺配妮 农扁 :12 官捞飘
橇肺配妮 备己 :
-------------------------------------------------------------------------------------------------------------------------------	
| 1bit(鞠龋拳 蜡公)| 15bit(Protocol ID) | 2byte(Game Type ID) | 2byte(data size) | 2byte (罚待 蔼)] 4byte (MD5) | 单捞鸥 农扁 |	
-------------------------------------------------------------------------------------------------------------------------------
漂隆 棺 槛瘤 荤亲 : 
	8官捞飘绰 扁夯 庆歹捞促.
	庆歹俊 md5狼 4官捞飘 傍埃篮 酒流 固犬沥. 巢败滴扁父 窃.(单捞鸥 傍埃 鞠龋拳 酒流 固犬沥) 
	菩胶况靛绰 (md5)hash 捞侩窍咯 窍磊.
	sGameType俊辑档 鞠龋拳 等 霸烙 皋技瘤狼 鸥涝阑 沥窍咯具 茄促. (瘤陛篮 圈荐绰 鞠龋拳 娄荐绰 厚鞠龋拳肺 沥窍看促)
	单捞鸥 鞠龋拳档 秦具 茄促 ( 酒流 固备泅)

	

--------------------------------------------------------------------------------------------------------*/
#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -