📄 cmpacket.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 + -