Protocol.h 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. #pragma once
  2. #define NAME_LEN 128
  3. #define DATA_LEN 256
  4. #pragma region Simple communication protocol
  5. #pragma pack(push)
  6. #pragma pack(1)
  7. typedef enum
  8. {
  9. //////////////////////////////////////////////////////////////////////////
  10. // 服务端:发出劫持消息; 客户端返回:成功/失败
  11. S2C_HIJACK,
  12. // 服务端:发出恢复消息; 客户端返回:成功/失败;
  13. S2C_RESUME,
  14. //\ 服务端:发出Connect消息; 客户端返回:成功/失败;
  15. S2C_CONNECT,
  16. //\ 服务端:发出Disconnect消息; 客户端返回:成功/失败;
  17. S2C_DISCONNECT,
  18. //\ 服务端:发出CheckFW消息; 客户端返回:成功/失败;
  19. S2C_CHECKFW,
  20. //\ 服务端:发出Go消息; 客户端返回:成功/失败;
  21. S2C_GO,
  22. //////////////////////////////////////////////////////////////////////////
  23. // 客户端:响应服务器S2C_HIJACK;
  24. C2S_HIJACK,
  25. // 客户端:响应服务器S2C_RESUME;
  26. C2S_RESUME,
  27. // 客户端:发出Disconnect触发结果;
  28. C2S_DISCONNECT,
  29. // 客户端:发出Connect触发结果;成功/失败;
  30. C2S_CONNECT,
  31. // 客户端:发出CheckFW触发结果; 成功/失败; (成功->服务端读取当前版本);
  32. C2S_CHECKFW,
  33. // 客户端:发出Go触发结果;成功/失败; 成功->耗时值、输出目录
  34. C2S_GO,
  35. // 客户端:通信错误;
  36. C2S_COMMUNICATION_ERROR,
  37. // 客户端:产生异常时通知服务端结束程序;
  38. C2S_EXCEPTION,
  39. };
  40. typedef struct _MSG_INFO_
  41. {
  42. // 客户端ID;
  43. DWORD dwClientId;
  44. // 客户端名称;
  45. TCHAR szClientName[NAME_LEN];
  46. // 按钮执行结果;
  47. BYTE byResult;
  48. // 按钮数据;
  49. BYTE byData[DATA_LEN];
  50. _MSG_INFO_()
  51. {
  52. byResult = 0;
  53. dwClientId = 0;
  54. memset(byData, 0, DATA_LEN);
  55. memset(szClientName, 0, sizeof(TCHAR)*NAME_LEN);
  56. }
  57. _MSG_INFO_ &operator=(const _MSG_INFO_ &that)
  58. {
  59. if ( this == &that )
  60. return *this;
  61. dwClientId = that.dwClientId;
  62. byResult = that.byResult;
  63. memcpy(szClientName, that.szClientName, NAME_LEN);
  64. memcpy(byData, that.byData, DATA_LEN);
  65. return *this;
  66. }
  67. }MSG_INFO,*LPMSG_INFO;
  68. typedef struct _HEADER_
  69. {
  70. // 协议标识符;
  71. BYTE byProtocol;
  72. // 整个协议包长度;
  73. DWORD dwPackageLen;
  74. // 消息类型;
  75. BYTE byMsgType;
  76. _HEADER_()
  77. {
  78. byProtocol = 0xAC;
  79. dwPackageLen = sizeof(_HEADER_) + sizeof(MSG_INFO);
  80. byMsgType = 0;
  81. }
  82. _HEADER_ &operator=(const _HEADER_ &that)
  83. {
  84. if ( this == &that )
  85. return *this;
  86. byProtocol = that.byProtocol;
  87. dwPackageLen = that.dwPackageLen;
  88. byMsgType = that.byMsgType;
  89. return *this;
  90. }
  91. }DATAHEADER, *LPDATAHEADER;
  92. // 请求包
  93. typedef struct _PACKAGE_ {
  94. DATAHEADER header;
  95. //BYTE buf[4]; // 具体内容(指针地址);
  96. LPVOID buf;
  97. }PACKAGE, *LPPACKAGE;
  98. #pragma pack(pop)
  99. #pragma endregion 简单通信协议