63 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| 
 | ||
| 
 | ||
| #ifndef	_DATA_NETWORD_DATA_HANDLE_H_
 | ||
| #define	_DATA_NETWORD_DATA_HANDLE_H_
 | ||
| 
 | ||
| #include "CommonDef.h"
 | ||
| #include "Define.h"
 | ||
| 
 | ||
| //网络数据处理器
 | ||
| class CNetworkDataHandler
 | ||
| {
 | ||
| public:
 | ||
| 	/*
 | ||
| 	* 构造函数,初始化一些参数
 | ||
| 	* 一个数据包的头由tab,len,headCheckSum,dataCheckSum,data组成的
 | ||
| 	* param bNeedEncrypt: 是否需要加密处理,如果不需要的话,那么将不进行加密和checksum的校验
 | ||
| 	*/
 | ||
| 	CNetworkDataHandler(bool bNeedEncrypt=false);
 | ||
| 
 | ||
| 	/*
 | ||
| 	* 解包数据
 | ||
| 	* param pInBuff 输入的数据包
 | ||
| 	* param nInSize 输入的数据包的长度
 | ||
| 	* param pOutBuff 输出的数据包指针
 | ||
| 	* param nOutSize 输出的数据包的长度
 | ||
| 	* param nInProcessSize  输入的数据包处理了的长度,如果大于0,那么前面的这个字节的数据包可以丢弃了
 | ||
| 	* param nOutProcessSize 处理好的数据长度,处理好的数据放在pOutBuff里
 | ||
| 	* param bWithHeader 是否还需要网络数据头,如果不需要,那么将把8个字节的网络字节头丢弃,pOutBuff中的数据将是无头的逻辑数据
 | ||
| 	* param pEncrypt 加密器的指针
 | ||
| 	* ret  如果进行了数据处理返回true,否则返回false。数据处理包括发现前面有无效数字,拷贝了一个完整的数据包,丢弃一些字节等
 | ||
| 	*/
 | ||
| 	bool DataUnpack(char *pInBuff,SIZE_T nInSize, char *pOutBuff, SIZE_T nOutSize,SIZE_T & nInProcessSize,SIZE_T & nOutProcessSize,bool bWithHeader=false,Encrypt * pEncrypt=NULL);
 | ||
| 	
 | ||
| 	/*
 | ||
| 	* 逻辑数据包组装成网络数据包
 | ||
| 	* param pInBuff 输入的数据包
 | ||
| 	* param nInSize 输入的数据包的长度
 | ||
| 	* param pOutBuff 输出的数据包指针
 | ||
| 	* param nOutSize 输出的数据包的长度
 | ||
| 	* param pEncrypt 加密器的指针
 | ||
| 	* ret  返回组装包以后pOutBuff的数据长度,如果没有组装成功,返回0
 | ||
| 	*/
 | ||
| 	INT_PTR DataPack(char *pInBuff,SIZE_T nInSize, char *pOutBuff, SIZE_T nOutSize,Encrypt * pEncrypt=NULL);
 | ||
| 
 | ||
| 	/*
 | ||
| 	* Comments:填充加密头
 | ||
| 	* Param char * pInBuff: 数据部分的指针
 | ||
| 	* Param SIZE_T nInSize: 数据部分的长度
 | ||
| 	* Param PDATAHEADER pHeader: 头的指针
 | ||
| 	* Param Encrypt * pEncrypt: 加密器的指针
 | ||
| 	* @Return void:
 | ||
| 	*/
 | ||
| 	static void FillInHeader(char *pInBuff,SIZE_T nInSize,PDATAHEADER pHeader,Encrypt * pEncrypt);
 | ||
| 
 | ||
| 	//设置tag的值
 | ||
| 	void SetTagValue(WORD nValue){m_nTag=nValue;}
 | ||
| 
 | ||
| 	void SetNeedEncrypt(bool flag){m_bNeedEncrypt = flag;}
 | ||
| private:
 | ||
| 	bool m_bNeedEncrypt; //是否需要加密处理,如果不需要的话,那么将不进行加密和checksum的校验
 | ||
| 	WORD m_nTag;    //Tag的值
 | ||
| };
 | ||
| #endif |