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

📄 pack.h

📁 CBS(小区广播)程序实现手稿
💻 H
字号:
//	PACK.H 打包头文件

#define BYTE				unsigned char
#define CHAR				char
#define DWORD				unsigned long
#define WORD				unsigned short

#define PACK_KEY_NUMBER  1			// 数
#define PACK_KEY_COMMA   2			// ,
#define PACK_KEY_D       3			// D or d
#define PACK_KEY_LEFTA   4			// [
#define PACK_KEY_RIGHTA  5			// ]
#define PACK_KEY_LEFTB   6			// {
#define PACK_KEY_RIGHTB  7			// }
#define PACK_KEY_P	 8			// P or p
#define PACK_KEY_C       9			// C or c
#define PACK_KEY_FLATF   10			// <F类描述符>
#define PACK_KEY_N       11			// N or n
#define PACK_KEY_ADDRESS 12			// &
#define PACK_KEY_BAD     13			// 非法字符
#define PACK_KEY_EOI     14			// 串尾


struct FlatPackControl_t
{
	int		Mode;			//打解包标志 0:解包,1:打包
	BYTE   *StreamPtr;			//字节流地址
	int		StreamLen;		//字节流长度
	int		Vcount;			//V部分的个数
	int		Oflag;			//是否含O部分的标志
	int		Lflag;			//V O部分长度指示语
	int		WorkingPos;		//工作指针
	int		OPartPos;		//O部分指针
	int		VPartPos;		//V部分指针
	int		EOIPos;			//结尾指针
	int		FpartLen;		//F部分的长度
	int		Vencounted;		//已处理的V参数个数	
	int		Oencounted;		//已处理的O参数个数	
};


//以下是结构打解包控制结构
struct Token_t					//标识结构								
{
	int Class;				//标识编码
	int Value;				//整数的值或F类描述符
	int Len;				//F类描述符的长度
};

struct Envelop					//树结点
{
	int Next;				//兄弟指针
	int Father;				//父亲指针
	int Son;				//长子指针
	int StreamPtr;				//流的起始地址
	int StreamLen;				//流长度
	int TagLen;				//标识长度
	int LenLen;				//长度字段长度
	int BodyLen;				//体长度
	int State;				//体状态
};

struct tree_control_t2				//控制区结点
{
	BYTE * buf;				//—>缓冲区首址
	BYTE * format;				//—>格式描述串首址
	int BufPos;				//工作指针—>当前缓冲区工作地址
	int ScanPos;				//工作指针—>当前格式描述串工作地址
	int ErrCount;				//错误记录
	int level;				//记录当前层次
	int lengh;				//缓冲区最大长度
	int NodeNumber;				//树节点记数
	int CurrentNode;			//当前节点
	struct Envelop Env[30];			//按层次记录树结构
};

extern int BuildForest(int handle,int Father,int Limit);


extern int SolidPackBegin();
extern int SolidPackAttach(int handle,BYTE * s,int s_len);
extern int SolidPackContinue(int handle,BYTE *format,...);
extern int SolidPackEnd(int handle);
extern int SolidPackRelease(int handle);

extern int FlatPackBegin();
extern int FlatPackAttach(int handle,int vc,int o_flag,BYTE * s,int s_len);
extern int FlatPackSetVOLenLen(int handle,int LenLen);
extern int FlatPackFPart(int handle,BYTE *format,...);

extern int FlatPackVPart(int handle,BYTE *format,...);
extern int FlatPackOPart(int handle,BYTE * format,int name,...);
extern int FlatPackEnd(int handle,int EOC_f);
extern int FlatPackRelease(int handle);

extern int FlatUnPack(BYTE * buf,BYTE * format,...);
extern int FlatUnPackBegin();
extern int FlatUnPackAttach(int handle,BYTE * s,int s_len);
extern int FlatUnPackSetVOLenLen(int handle,int LenLen);
extern int FlatUnPackFPart(int handle,BYTE *format,...);
extern BYTE * FlatUnPackGetFPartBODY(int handle);
extern BYTE FlatUnPackGetBYTE(int handle);
extern DWORD FlatUnPackGetWORD(int handle);
extern int FlatUnPackGetFPartPos(int handle);
extern int FlatUnPackEOI(int handle);
extern int FlatUnPackSetFPartPos(int handle,int pos,int mode);
extern int FlatUnPackVPart(int handle,BYTE *format,int * len,...);
extern int FlatUnPackVSet(int handle);
extern int FlatUnPackVContinue(int handle,BYTE *format,...);
extern int FlatUnPackGetVPartLEN(int handle);
extern BYTE * FlatUnPackGetVPartBODY(int handle);
extern int FlatUnPackSkipVPart(int handle);
extern int FlatUnPackOPart(int handle,BYTE *format,int *name,int * len,...);
extern int FlatUnPackOSet(int handle);
extern int FlatUnPackOContinue(int handle,BYTE *format,...);
extern int FlatUnPackGetOPartNAME(int handle);
extern int FlatUnPackGetOPartLEN(int handle);
extern BYTE * FlatUnPackGetOPartBODY(int handle);
extern int FlatUnPackSkipOPart(int handle);
extern int FlatUnPackEnd(int handle);
extern int FlatUnPackRelease(int handle);

extern int SolidUnPackBegin();
extern int SolidUnPackAttach(int handle,BYTE * s,int s_len);
extern int SolidUnPackGetID(int handle);
extern int SolidUnPackGetLEN(int handle);
extern BYTE* SolidUnPackGetBODY(int handle);
extern int SolidUnPackSkipBODY(int handle);
extern int SolidUnPackFORWARD(int handle);
extern int SolidUnPackBACKWARD(int handle);
extern int SolidUnPackEnd(int handle);
extern int SolidUnPackRelease(int handle);

extern int show(BYTE * buf,int len);

⌨️ 快捷键说明

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