123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234 |
- /*************************************************************
- /* Copyright (C), 2014-2020, lyfz. Co., Ltd.
- /* 文件名: Client2SrvType.h
- /* 作者: Jeff.w
- /* 创建日期: 2014-08-07
- /* 版本号: V1.0
- /* 描述: 核心层底,客户端与服务端通信协议包定义
- /* 其它:
- /* 主要类模块:
- /* 历史修改记录:
- /* 作者 时间 版本 描述
- /* Jeff.w 14/08/07 1.0 创建这个模块
- ***************************************************************/
- #ifndef CLIENT2SRVTYPE_HEADER
- #define CLIENT2SRVTYPE_HEADER
- #pragma once
- //#include "Stdafx.h"
- //#include "..\common\Global.h"
- extern unsigned int VerifyIntegrityPacket(IN void *pIntegrityPacket,IN unsigned int nPacketSize);
- #include "Const.h"
- // 完整的数据包:协议头 + 协议体(数据)+ 协议尾;
- // 注意:尽量使数据包小,使数量吞吐量更大、运行速度更快;
- // 公共命令类类型;:common comand type
- // 主命令类型1: C2L:consumer terminal to lyfz service;
- // 主命令类型2: C2C:consumer client to consumer service;
- enum
- {
- //----------------------------:common comand.type: 1~999----------------------------------------------------
- CMD_HEART = 1, // 心跳包;
- CMD_TOCHAT = 2, // 文字聊天;
- CMD_FILEINFO_TRANSFER = 3, // 文件传输-文件信息;
- CMD_FILECONT_TRANSFER = 4, // 文件传输-文件内容;
- CMD_UPDATA = 5, // 有升级信息(用户终端每次登录时,请求检测是否有新版本可升级的信息);
- CMD_DATABASEINFO = 6, // 向请求端返回数据库信息;
- CMD_OHTER_INFO = 999, // 其他信息;
-
-
- //------------------------C2L:consumer terminal to lyfz.service: 1000~1999------------------------------------
- C2LCMD_REQ_LOGIN = 1000, // 用户终端请求登录利亚方舟服务端(外网ip+登录信息);
- //C2LCMD_GET_DOG_DATA = 1001, // 利亚方舟获取用户终端机器加密狗数据信息;
- C2LCMD_DOGINFO = 1001, // 用户终端向利亚方舟发送加密狗信息;
- C2LCMD_GET_VAR = 1002, // 请求用户终端的版本号;
- C2LCMD_DEAL_ILLEGAL = 1003, // 处理盗版、过期用户:停止用户终端工作、启用定时关机、程序文件自动删除等等操作命令;
- C2LCMD_DEAL_SMS = 1004, // 利亚方舟服务端处理用户终端的短信发送工作;
- C2LCMD_GET_DBINFO = 1005, // 利亚方舟服务端获取用户终端电脑数据库信息;
-
- // .预留,若SQL数据库引擎未启用TCP/IP作为远程连接方式,需定义读写表的具体命令;(Jeff.100%的不建议使用这种方式获取数据,占用太多带宽和资源)
- // .若要使用SQL,则只允许SQL的updata、insert、delete、drop……等命令,不允许使用select来返回查询到数据;
- C2LCMD_OTHER_INFO = 1999, // 读其它信息;
- //------------------------C2C:consumer client to consumer service: 2000~2999--------------------------------
- C2CCMD_REQ_LOGIN = 2000, // 客户端请求登录服务器;
- C2CCMD_REQ_LOGOUT = 2001, // 客户端注销;
- C2CCMD_REQ_DOG_DATA = 2002, // 读软件狗数据;
- C2CCMD_AUTO_UPDATA = 2003, // 服务端向所有客户发送自动数据更新命令;
- C2CCMD_REQ_SERVER_VAR = 2004, // 请求服务端的版本号;
- C2CCMD_GET_DBINFO = 2005, // 利亚方舟服务端获取用户终端电脑数据库信息;
- C2CCMD_ORD_PHOTO_BAK = 2006, // 客户端端向备份程序发送订单相片重新备份命令(导片与备份存在写备份无法锁定现象,need to Notify);
- // .预留,若SQL数据库引擎未启用TCP/IP作为远程连接方式,需定义读写表的具体命令;(Jeff.100%的不建议使用这种方式获取数据,占用太多带宽和资源)
- // .若要使用SQL,则只允许SQL的updata、insert、delete、drop……等命令,不允许使用select来返回查询到数据;
- C2CCMD_OTHER_INFO = 2999, // 读其它信息;
- };
- // 请在此处更改需要设置的包头和包尾标识符;
- const int PBOF = 0x7e;
- const int PEOF = 0x0e;
- // 协议头-勿更改;
- typedef struct __STPROTOCOLHEADER__
- {
- unsigned char bof; // 协议头标识;
- unsigned int nCmd; // 具体的命令;
- unsigned int nCmdType; // 命令类型;
- unsigned int nDataLen; // 有效数据长度,包含头;
- unsigned int nVerify; // 预留校验码;
- __STPROTOCOLHEADER__(){bof = PBOF;}
- }STProtocolheader,*pSTProtocolheader;
- // 协议尾-勿更改;
- typedef struct __STPROTOCOLTAIL__
- {
- unsigned char eof; // 协议尾标识;
- __STPROTOCOLTAIL__(){eof = PEOF;}
- }STProtocoltail,*pSTProtocoltail;
- // ----------------------------------------------------------------------------------------------
- // -------------------------------------以下为全为协议体-----------------------------------------;
- typedef struct __STHEARTBEATBODY__
- {
- STProtocolheader tPHeader;
- TCHAR cflaghbeat;
- __STHEARTBEATBODY__(){
- tPHeader.nCmd = CMD_HEART;
- tPHeader.nCmdType = 0;
- cflaghbeat = 9;
- tPHeader.nDataLen = sizeof(__STHEARTBEATBODY__);
- }
- inline void GetVerify() {
- tPHeader.nVerify = VerifyIntegrityPacket(this,tPHeader.nDataLen);
- }
- }STHeartbeatbody,*pSTHeartbeatbody;
- // 示例,文件信息:
- typedef struct __STFILEINFOBODY__
- {
- STProtocolheader tPHeader;
- // 需要添加的实际数据;
- unsigned __int64 nFileLength; // 文件长度;
- TCHAR szFileName[MAX_PATH]; // 长文件名;
- TCHAR szFileExt[MAX_PATH]; // 文件扩展名;
- //DATE fCreateDate; // 文件创建日期;
- //DATE fModifyDate; // 文件创建日期;
- __int64 tCreateDate; // 文件创建日期;
- __int64 tModifyDate; // 文件创建日期;
- //unsigned char attribute; // 文件属性;
- //STProtocoltail tPTail;
- __STFILEINFOBODY__() {
- tPHeader.nCmd = CMD_FILEINFO_TRANSFER;
- tPHeader.nCmdType = 0;
- tPHeader.nDataLen = sizeof(__STFILEINFOBODY__);
- }
- inline void GetVerify() {
- tPHeader.nVerify = VerifyIntegrityPacket(this,tPHeader.nDataLen);
- }
- }STFileInfobody,*pSTFileInfobody;
- // 文件内容;
- typedef struct __STFILECONTEXTBODY__
- {
- STProtocolheader tPHeader;
- int nFileContextLen;
- unsigned char szFileContext[MAX_FILETRANSFERLENGTH];
- //STProtocoltail tPTail;
- __STFILECONTEXTBODY__() {
- tPHeader.nCmd = CMD_FILECONT_TRANSFER;
- tPHeader.nCmdType = 0;
- tPHeader.nDataLen = sizeof(__STFILECONTEXTBODY__);
- }
- inline void GetVerify() {
- tPHeader.nVerify = VerifyIntegrityPacket(this,tPHeader.nDataLen);
- }
- }STFileContextbody,*pSTFileContextbody;
- // 文字聊天;
- typedef struct __STCHATBODY__
- {
- STProtocolheader tPHeader;
- TCHAR szChat[MAX_CHATLENGTH];
- //STProtocoltail tPTail;
- __STCHATBODY__() {
- tPHeader.nCmd = CMD_TOCHAT;
- tPHeader.nCmdType = 0;
- tPHeader.nDataLen = sizeof(__STCHATBODY__);
- }
- inline void GetVerify(){
- tPHeader.nVerify = VerifyIntegrityPacket(this,tPHeader.nDataLen);
- }
- }STChatbody,*pSTChatbody;
- // 加密狗信息;
- typedef struct __STDOGINFOBODY__
- {
- STProtocolheader tPHeader;
- // dog info;
- // ........
- __STDOGINFOBODY__() {
- tPHeader.nCmd = C2LCMD_DOGINFO;
- tPHeader.nCmdType = 0;
- tPHeader.nDataLen = sizeof(__STDOGINFOBODY__);
- }
- inline void GetVerify() {
- tPHeader.nVerify = VerifyIntegrityPacket(this,tPHeader.nDataLen);
- }
- }STDogInfobody,*pSTDogInfobody;
- // 登录账户信息;
- typedef struct __STACCOUNTINFOBODY__
- {
- STProtocolheader tPHeader;
- TCHAR szAccount[MAX_PATH];
- TCHAR szPassword[MAX_PATH];
- __STACCOUNTINFOBODY__() {
- tPHeader.nCmd = C2CCMD_REQ_LOGIN;
- tPHeader.nCmdType = 0;
- tPHeader.nDataLen = sizeof(__STACCOUNTINFOBODY__);
- }
- inline void GetVerify() {
- tPHeader.nVerify = VerifyIntegrityPacket(this,tPHeader.nDataLen);
- }
- }STAccountInfobody,*pSTAccountInfobody;
- // 返回的数据库信息;
- // 数据库与服务端可不在同一机子;
- // 备份模块则是单独的一个后台服务程序;
- typedef struct __STDATABASEINFOBODY__
- {
- STProtocolheader tPHeader;
- TCHAR szDatabaseServer[MAX_PATH]; // 服务器地址;
- TCHAR szDatabaseTCPPort[MAX_PATH]; // 服务器TCP端口;
- TCHAR szDatabaseAccount[MAX_PATH]; // 数据库登录账户;
- TCHAR szDatabasePassword[MAX_PATH]; // 数据库账户密码;
- TCHAR szDatabaseName[MAX_PATH]; // 数据库名称;
- __STDATABASEINFOBODY__(){
- tPHeader.nCmd = CMD_DATABASEINFO;
- tPHeader.nCmdType = 0;
- tPHeader.nDataLen = sizeof(__STDATABASEINFOBODY__);
- }
- inline void GetVerify() {
- tPHeader.nVerify = VerifyIntegrityPacket(this,tPHeader.nDataLen);
- }
- }STDatabaseInfobody,*pSTDatabaseInfobody;
- #endif
|