Client2SrvType.h 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234
  1. /*************************************************************
  2. /* Copyright (C), 2014-2020, lyfz. Co., Ltd.
  3. /* 文件名: Client2SrvType.h
  4. /* 作者: Jeff.w
  5. /* 创建日期: 2014-08-07
  6. /* 版本号: V1.0
  7. /* 描述: 核心层底,客户端与服务端通信协议包定义
  8. /* 其它:
  9. /* 主要类模块:
  10. /* 历史修改记录:
  11. /* 作者 时间 版本 描述
  12. /* Jeff.w 14/08/07 1.0 创建这个模块
  13. ***************************************************************/
  14. #ifndef CLIENT2SRVTYPE_HEADER
  15. #define CLIENT2SRVTYPE_HEADER
  16. #pragma once
  17. //#include "Stdafx.h"
  18. //#include "..\common\Global.h"
  19. extern unsigned int VerifyIntegrityPacket(IN void *pIntegrityPacket,IN unsigned int nPacketSize);
  20. #include "Const.h"
  21. // 完整的数据包:协议头 + 协议体(数据)+ 协议尾;
  22. // 注意:尽量使数据包小,使数量吞吐量更大、运行速度更快;
  23. // 公共命令类类型;:common comand type
  24. // 主命令类型1: C2L:consumer terminal to lyfz service;
  25. // 主命令类型2: C2C:consumer client to consumer service;
  26. enum
  27. {
  28. //----------------------------:common comand.type: 1~999----------------------------------------------------
  29. CMD_HEART = 1, // 心跳包;
  30. CMD_TOCHAT = 2, // 文字聊天;
  31. CMD_FILEINFO_TRANSFER = 3, // 文件传输-文件信息;
  32. CMD_FILECONT_TRANSFER = 4, // 文件传输-文件内容;
  33. CMD_UPDATA = 5, // 有升级信息(用户终端每次登录时,请求检测是否有新版本可升级的信息);
  34. CMD_DATABASEINFO = 6, // 向请求端返回数据库信息;
  35. CMD_OHTER_INFO = 999, // 其他信息;
  36. //------------------------C2L:consumer terminal to lyfz.service: 1000~1999------------------------------------
  37. C2LCMD_REQ_LOGIN = 1000, // 用户终端请求登录利亚方舟服务端(外网ip+登录信息);
  38. //C2LCMD_GET_DOG_DATA = 1001, // 利亚方舟获取用户终端机器加密狗数据信息;
  39. C2LCMD_DOGINFO = 1001, // 用户终端向利亚方舟发送加密狗信息;
  40. C2LCMD_GET_VAR = 1002, // 请求用户终端的版本号;
  41. C2LCMD_DEAL_ILLEGAL = 1003, // 处理盗版、过期用户:停止用户终端工作、启用定时关机、程序文件自动删除等等操作命令;
  42. C2LCMD_DEAL_SMS = 1004, // 利亚方舟服务端处理用户终端的短信发送工作;
  43. C2LCMD_GET_DBINFO = 1005, // 利亚方舟服务端获取用户终端电脑数据库信息;
  44. // .预留,若SQL数据库引擎未启用TCP/IP作为远程连接方式,需定义读写表的具体命令;(Jeff.100%的不建议使用这种方式获取数据,占用太多带宽和资源)
  45. // .若要使用SQL,则只允许SQL的updata、insert、delete、drop……等命令,不允许使用select来返回查询到数据;
  46. C2LCMD_OTHER_INFO = 1999, // 读其它信息;
  47. //------------------------C2C:consumer client to consumer service: 2000~2999--------------------------------
  48. C2CCMD_REQ_LOGIN = 2000, // 客户端请求登录服务器;
  49. C2CCMD_REQ_LOGOUT = 2001, // 客户端注销;
  50. C2CCMD_REQ_DOG_DATA = 2002, // 读软件狗数据;
  51. C2CCMD_AUTO_UPDATA = 2003, // 服务端向所有客户发送自动数据更新命令;
  52. C2CCMD_REQ_SERVER_VAR = 2004, // 请求服务端的版本号;
  53. C2CCMD_GET_DBINFO = 2005, // 利亚方舟服务端获取用户终端电脑数据库信息;
  54. C2CCMD_ORD_PHOTO_BAK = 2006, // 客户端端向备份程序发送订单相片重新备份命令(导片与备份存在写备份无法锁定现象,need to Notify);
  55. // .预留,若SQL数据库引擎未启用TCP/IP作为远程连接方式,需定义读写表的具体命令;(Jeff.100%的不建议使用这种方式获取数据,占用太多带宽和资源)
  56. // .若要使用SQL,则只允许SQL的updata、insert、delete、drop……等命令,不允许使用select来返回查询到数据;
  57. C2CCMD_OTHER_INFO = 2999, // 读其它信息;
  58. };
  59. // 请在此处更改需要设置的包头和包尾标识符;
  60. const int PBOF = 0x7e;
  61. const int PEOF = 0x0e;
  62. // 协议头-勿更改;
  63. typedef struct __STPROTOCOLHEADER__
  64. {
  65. unsigned char bof; // 协议头标识;
  66. unsigned int nCmd; // 具体的命令;
  67. unsigned int nCmdType; // 命令类型;
  68. unsigned int nDataLen; // 有效数据长度,包含头;
  69. unsigned int nVerify; // 预留校验码;
  70. __STPROTOCOLHEADER__(){bof = PBOF;}
  71. }STProtocolheader,*pSTProtocolheader;
  72. // 协议尾-勿更改;
  73. typedef struct __STPROTOCOLTAIL__
  74. {
  75. unsigned char eof; // 协议尾标识;
  76. __STPROTOCOLTAIL__(){eof = PEOF;}
  77. }STProtocoltail,*pSTProtocoltail;
  78. // ----------------------------------------------------------------------------------------------
  79. // -------------------------------------以下为全为协议体-----------------------------------------;
  80. typedef struct __STHEARTBEATBODY__
  81. {
  82. STProtocolheader tPHeader;
  83. TCHAR cflaghbeat;
  84. __STHEARTBEATBODY__(){
  85. tPHeader.nCmd = CMD_HEART;
  86. tPHeader.nCmdType = 0;
  87. cflaghbeat = 9;
  88. tPHeader.nDataLen = sizeof(__STHEARTBEATBODY__);
  89. }
  90. inline void GetVerify() {
  91. tPHeader.nVerify = VerifyIntegrityPacket(this,tPHeader.nDataLen);
  92. }
  93. }STHeartbeatbody,*pSTHeartbeatbody;
  94. // 示例,文件信息:
  95. typedef struct __STFILEINFOBODY__
  96. {
  97. STProtocolheader tPHeader;
  98. // 需要添加的实际数据;
  99. unsigned __int64 nFileLength; // 文件长度;
  100. TCHAR szFileName[MAX_PATH]; // 长文件名;
  101. TCHAR szFileExt[MAX_PATH]; // 文件扩展名;
  102. //DATE fCreateDate; // 文件创建日期;
  103. //DATE fModifyDate; // 文件创建日期;
  104. __int64 tCreateDate; // 文件创建日期;
  105. __int64 tModifyDate; // 文件创建日期;
  106. //unsigned char attribute; // 文件属性;
  107. //STProtocoltail tPTail;
  108. __STFILEINFOBODY__() {
  109. tPHeader.nCmd = CMD_FILEINFO_TRANSFER;
  110. tPHeader.nCmdType = 0;
  111. tPHeader.nDataLen = sizeof(__STFILEINFOBODY__);
  112. }
  113. inline void GetVerify() {
  114. tPHeader.nVerify = VerifyIntegrityPacket(this,tPHeader.nDataLen);
  115. }
  116. }STFileInfobody,*pSTFileInfobody;
  117. // 文件内容;
  118. typedef struct __STFILECONTEXTBODY__
  119. {
  120. STProtocolheader tPHeader;
  121. int nFileContextLen;
  122. unsigned char szFileContext[MAX_FILETRANSFERLENGTH];
  123. //STProtocoltail tPTail;
  124. __STFILECONTEXTBODY__() {
  125. tPHeader.nCmd = CMD_FILECONT_TRANSFER;
  126. tPHeader.nCmdType = 0;
  127. tPHeader.nDataLen = sizeof(__STFILECONTEXTBODY__);
  128. }
  129. inline void GetVerify() {
  130. tPHeader.nVerify = VerifyIntegrityPacket(this,tPHeader.nDataLen);
  131. }
  132. }STFileContextbody,*pSTFileContextbody;
  133. // 文字聊天;
  134. typedef struct __STCHATBODY__
  135. {
  136. STProtocolheader tPHeader;
  137. TCHAR szChat[MAX_CHATLENGTH];
  138. //STProtocoltail tPTail;
  139. __STCHATBODY__() {
  140. tPHeader.nCmd = CMD_TOCHAT;
  141. tPHeader.nCmdType = 0;
  142. tPHeader.nDataLen = sizeof(__STCHATBODY__);
  143. }
  144. inline void GetVerify(){
  145. tPHeader.nVerify = VerifyIntegrityPacket(this,tPHeader.nDataLen);
  146. }
  147. }STChatbody,*pSTChatbody;
  148. // 加密狗信息;
  149. typedef struct __STDOGINFOBODY__
  150. {
  151. STProtocolheader tPHeader;
  152. // dog info;
  153. // ........
  154. __STDOGINFOBODY__() {
  155. tPHeader.nCmd = C2LCMD_DOGINFO;
  156. tPHeader.nCmdType = 0;
  157. tPHeader.nDataLen = sizeof(__STDOGINFOBODY__);
  158. }
  159. inline void GetVerify() {
  160. tPHeader.nVerify = VerifyIntegrityPacket(this,tPHeader.nDataLen);
  161. }
  162. }STDogInfobody,*pSTDogInfobody;
  163. // 登录账户信息;
  164. typedef struct __STACCOUNTINFOBODY__
  165. {
  166. STProtocolheader tPHeader;
  167. TCHAR szAccount[MAX_PATH];
  168. TCHAR szPassword[MAX_PATH];
  169. __STACCOUNTINFOBODY__() {
  170. tPHeader.nCmd = C2CCMD_REQ_LOGIN;
  171. tPHeader.nCmdType = 0;
  172. tPHeader.nDataLen = sizeof(__STACCOUNTINFOBODY__);
  173. }
  174. inline void GetVerify() {
  175. tPHeader.nVerify = VerifyIntegrityPacket(this,tPHeader.nDataLen);
  176. }
  177. }STAccountInfobody,*pSTAccountInfobody;
  178. // 返回的数据库信息;
  179. // 数据库与服务端可不在同一机子;
  180. // 备份模块则是单独的一个后台服务程序;
  181. typedef struct __STDATABASEINFOBODY__
  182. {
  183. STProtocolheader tPHeader;
  184. TCHAR szDatabaseServer[MAX_PATH]; // 服务器地址;
  185. TCHAR szDatabaseTCPPort[MAX_PATH]; // 服务器TCP端口;
  186. TCHAR szDatabaseAccount[MAX_PATH]; // 数据库登录账户;
  187. TCHAR szDatabasePassword[MAX_PATH]; // 数据库账户密码;
  188. TCHAR szDatabaseName[MAX_PATH]; // 数据库名称;
  189. __STDATABASEINFOBODY__(){
  190. tPHeader.nCmd = CMD_DATABASEINFO;
  191. tPHeader.nCmdType = 0;
  192. tPHeader.nDataLen = sizeof(__STDATABASEINFOBODY__);
  193. }
  194. inline void GetVerify() {
  195. tPHeader.nVerify = VerifyIntegrityPacket(this,tPHeader.nDataLen);
  196. }
  197. }STDatabaseInfobody,*pSTDatabaseInfobody;
  198. #endif