| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 | #pragma once#include "JHDGlobalDefine.h"struct ImgInfoRequest {	int iZZJNo;	DWORD time;};struct LastImgInfoRequest {	int iZZJNo;};struct ImgListRequest {	WORD iZZJNo;	DWORD time;	DWORD endTime;	BYTE imgType;};struct JEP_LEN_REGION{	DWORD dir : 1;	//方向,0-下行(主站→采集器),1-上行(采集器→主站)	DWORD ceid : 10;	DWORD cmdid : 5;//恒为0x1B	DWORD flag : 4;//FLAG恒为0x0000	DWORD dlen : 12;//数据长度,本协议最大为4095};//共4字节class PktAssembleBuff {public:	void Init() {		iAbandonBytes = 0;		iPktLen = 0;		m_iStreamLen = 0;		m_protocolType = PROTOCOL_UNKNOWN;		iPktBuffSize = 0;		m_iStreaBuffSize = 0;		if (m_tcpStreamData)		{			delete[] m_tcpStreamData;			m_tcpStreamData = NULL;			m_iStreaBuffSize = 0;		}		if (pkt)		{			delete pkt;			pkt = NULL;		}	}	void Resize(BYTE*& pData, int& iLen, int iNewSize);	void ResizeStreamBuff(int iNewSize);	void ResizePopPktBuff(int iNewSize);	//输入tcp流	void PushStream(BYTE* pData, int iLen);	//输出包	//unknow对所有已知协议进行检测	//指定协议则只检测指定的协议	BOOL PopPkt(APP_LAYER_PROTO_TYPE cpt = PROTOCOL_UNKNOWN);	BOOL PopAllAs(APP_LAYER_PROTO_TYPE cpt);//把所有的缓存数据当作一个指定协议取出	BYTE* pkt;	int iPktBuffSize;	int iPktLen;	APP_LAYER_PROTO_TYPE m_protocolType;	int iAbandonBytes;	PktAssembleBuff()	{		pkt = NULL;		m_tcpStreamData = NULL;		Init();	}	BOOL Request315Pkt(BYTE cmd, BYTE* pPkt, int& iLen, void* pInData = NULL);	BYTE* m_tcpStreamData = nullptr; //TCP数据	int m_iStreaBuffSize = 0;  //TCP数据分配的内存大小	int m_iStreamLen = 0;  //当前数据长度	//int IsValidPkt_DSP(BYTE* pData, int iLen);	int IsValidPkt_315(BYTE* pData, int iLen);	//int IsValidPkt_JEP(BYTE* pData, int iLen);	//int IsValidPkt_ModbusRTU(BYTE* pData, int iLen);	//int IsValidPkt_JDSP(BYTE* pData, int iLen);	//int IsValidPkt_WEBSOCKET(BYTE* pData, int iLen);};
 |