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

📄 lpackage.h

📁 c++实现的协议打包解包程序代码
💻 H
字号:
/*******************************************************************************

LPackage.h
组装拆包类
================================================================================
Copyright (c) 2002  GameHigh Group.
Author: bigbencat
email:  liguangyu@china.com

这一程序是自由软件,你可以遵照自由软件基金会出版的GNU 通用公共许可证条款来修改和
重新发布这一程序。或者用许可证的第二版,或者(根据你的选择)用任何更新的版本。

发布这一程序的目的是希望它有用,但没有任何担保。甚至没有适合特定目地的隐含的担保。
更详细的情况请参阅GNU通用公共许可证。

你应该已经和程序一起收到一份GNU通用公共许可证的副本。如果还没有,写信给:
The Free Software Foundation, Inc.,  675  Mass Ave,  Cambridge,  MA02139,  USA
或访问 http://www.gnu.org

如果你在使用本软件时有什么问题或建议,用以下地址可以与我们取得联系:
    http://gamehigh.51.net
    gamehigh@hotmail.com

文件版本:
    0.1.2
    Build 021202
    Date  2002-12-02函数

修改历史:
    2001-08-01
        首次新建文件
	2002-12-01
		增加4个字符串
*******************************************************************************/


// LPackage.h: interface for the CLPackage class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_LPACKAGE_H__4E866910_82E8_40BD_BCBC_31C3B3AA6BF5__INCLUDED_)
#define AFX_LPACKAGE_H__4E866910_82E8_40BD_BCBC_31C3B3AA6BF5__INCLUDED_
#define PACK_BUF_SIZE 2048
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
//#include <memory.h>
//#include <string.h>
//#include <Winsock2.h>
/*#ifndef _WINSOCK2API_
#include <WinSock2.h>
#pragma comment(lib, "ws2_32.lib")
#endif*/
#include "..\common\defs2.h"
//建立一个专门用来拆解和组建象CMPP报文,SMPP报文包的函数
//BYTE == unsigned char
//WORD == unsigned short
//DWORD == unsigned long

//##ModelId=3E795F87020B
class CLPackage  
{

public:
	//##ModelId=3E795F870215
	BOOL SetStringAndLongLen(char *szBuf);//先放入buf一个long的字符串长度,再放入字符串
	//##ModelId=3E795F870220
	BOOL SetStringAndShortLen(char *szBuf);//先放入buf一个short的字符串长度,再放入字符串
	//##ModelId=3E795F87022A
	BOOL SetStringAndByteLen(char *szBuf);//先放入buf一个byte的字符串长度,再放入字符串
	//##ModelId=3E795F870233
	BOOL GetStringByShortLen(char *szBuf, long lBufLen);//先取出一个short的字符串长度,再根据长度取出字符串,并防止缓冲超长
	//##ModelId=3E795F87023D
	BOOL GetStringByLongLen(char *szBuf, long lBufLen);//先取出一个long的字符串长度,再根据长度取出字符串,并防止缓冲超长
	//##ModelId=3E795F870252
	BOOL GetStringByByteLen(char* szBuf,long lBufLen);//先取出一个byte的字符串长度,再根据长度取出字符串,并防止缓冲超长
	//##ModelId=3E795F87025B
	short htons_my(short sTemp);
	//##ModelId=3E795F870266
	long htonl_my(long lTemp);
	//##ModelId=3E795F870270
	void Set(long lWordPos,long lHeadLen);
	//##ModelId=3E795F87027A
	long SetStr2(char *szData);
	//##ModelId=3E795F870284
	long MakeHead(long lCommand,unsigned long lSque);
	//##ModelId=3E795F870299
	long GetPackage(CLPackage &cPack);
	//##ModelId=3E795F8702A2
	long AddBuf(char* szData,long lLen);
	//##ModelId=3E795F8702AD
	long EndSetPackLen(long lLength=-1);
	//##ModelId=3E795F8702B7
	long SetStrByLen(char* szData,long lLength);
	//##ModelId=3E795F8702CA
	long GetLength();
	//##ModelId=3E795F8702CB
	char* GetBuf();
	//##ModelId=3E795F8702D4
	long SetStr(char* szData);
	//##ModelId=3E795F8702DF
	long SetInt(int iData);
	//##ModelId=3E795F8702E9
	long SetWord(unsigned short dData);
	//##ModelId=3E795F8702F3
	long SetDword(unsigned long dData);
	//##ModelId=3E795F870307
	long SetByte(unsigned char cByte);
	//##ModelId=3E795F870309
	long GetString(char *szOut,long lBufLen);
	//##ModelId=3E795F87031B
	long GetStrByLen(char* szOut,long lLen);
	//##ModelId=3E795F87032E
	unsigned char GetByte();
	//##ModelId=3E795F87032F
	int GetInt();
	//##ModelId=3E795F870338
	unsigned short GetWord();
	//##ModelId=3E795F870339
	unsigned long GetDword();
	//##ModelId=3E795F87034C
	long SetBuffer(char* szBuf,long lBufLength);
	//##ModelId=3E795F87034F
	void InitPack();
	//##ModelId=3E795F870360
	CLPackage();
	//##ModelId=3E795F87036A
	virtual ~CLPackage();
private:
	//##ModelId=3E795F87036C
	long PutVar(char* szData,long lLength);
	//##ModelId=3E795F87037E
	long GetVar(char* szPointer,long lLength);
	//##ModelId=3E795F87039E
	char m_szBuf[PACK_BUF_SIZE];//缓冲区
	//##ModelId=3E795F8703A6
	long m_lBufLen;
	//##ModelId=3E795F8703B0
	long lLenWordPos ;//设置报文中放长度的long的位置
	//##ModelId=3E795F8703BA
	long lPackHeadLen;  //报文全长=PACK_HEAD_LEN + 报文中标记长度
};

#endif // !defined(AFX_LPACKAGE_H__4E866910_82E8_40BD_BCBC_31C3B3AA6BF5__INCLUDED_)

⌨️ 快捷键说明

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