PktAssembleBuff.h 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. #pragma once
  2. #include "JHDGlobalDefine.h"
  3. struct ImgInfoRequest {
  4. int iZZJNo;
  5. DWORD time;
  6. };
  7. struct LastImgInfoRequest {
  8. int iZZJNo;
  9. };
  10. struct ImgListRequest {
  11. WORD iZZJNo;
  12. DWORD time;
  13. DWORD endTime;
  14. BYTE imgType;
  15. };
  16. struct JEP_LEN_REGION
  17. {
  18. DWORD dir : 1; //方向,0-下行(主站→采集器),1-上行(采集器→主站)
  19. DWORD ceid : 10;
  20. DWORD cmdid : 5;//恒为0x1B
  21. DWORD flag : 4;//FLAG恒为0x0000
  22. DWORD dlen : 12;//数据长度,本协议最大为4095
  23. };//共4字节
  24. class PktAssembleBuff {
  25. public:
  26. void Init() {
  27. iAbandonBytes = 0;
  28. iPktLen = 0;
  29. m_iStreamLen = 0;
  30. m_protocolType = PROTOCOL_UNKNOWN;
  31. iPktBuffSize = 0;
  32. m_iStreaBuffSize = 0;
  33. if (m_tcpStreamData)
  34. {
  35. delete[] m_tcpStreamData;
  36. m_tcpStreamData = NULL;
  37. m_iStreaBuffSize = 0;
  38. }
  39. if (pkt)
  40. {
  41. delete pkt;
  42. pkt = NULL;
  43. }
  44. }
  45. void Resize(BYTE*& pData, int& iLen, int iNewSize);
  46. void ResizeStreamBuff(int iNewSize);
  47. void ResizePopPktBuff(int iNewSize);
  48. //输入tcp流
  49. void PushStream(BYTE* pData, int iLen);
  50. //输出包
  51. //unknow对所有已知协议进行检测
  52. //指定协议则只检测指定的协议
  53. BOOL PopPkt(APP_LAYER_PROTO_TYPE cpt = PROTOCOL_UNKNOWN);
  54. BOOL PopAllAs(APP_LAYER_PROTO_TYPE cpt);//把所有的缓存数据当作一个指定协议取出
  55. BYTE* pkt;
  56. int iPktBuffSize;
  57. int iPktLen;
  58. APP_LAYER_PROTO_TYPE m_protocolType;
  59. int iAbandonBytes;
  60. PktAssembleBuff()
  61. {
  62. pkt = NULL;
  63. m_tcpStreamData = NULL;
  64. Init();
  65. }
  66. BOOL Request315Pkt(BYTE cmd, BYTE* pPkt, int& iLen, void* pInData = NULL);
  67. BYTE* m_tcpStreamData = nullptr; //TCP数据
  68. int m_iStreaBuffSize = 0; //TCP数据分配的内存大小
  69. int m_iStreamLen = 0; //当前数据长度
  70. //int IsValidPkt_DSP(BYTE* pData, int iLen);
  71. int IsValidPkt_315(BYTE* pData, int iLen);
  72. //int IsValidPkt_JEP(BYTE* pData, int iLen);
  73. //int IsValidPkt_ModbusRTU(BYTE* pData, int iLen);
  74. //int IsValidPkt_JDSP(BYTE* pData, int iLen);
  75. //int IsValidPkt_WEBSOCKET(BYTE* pData, int iLen);
  76. };