240717班级,工业化控制系统,煤矿相关行业,昆仑系统
lzh
2024-11-04 5a291c357f33979fb83a45cebfd85bd405700ce7
Server/ÂíÓ庼/code/common.h
@@ -1,162 +1,195 @@
#ifndef COMMON_H
#define COMMON_H
#include  <string.h>
//私有协议封装
//请求响应结构体有数据头+数据体
//使用枚举来统一各种功能类型】
#include <string.h>
enum TypeInfo{
    LOGIN_REQ,  //登录请求
    LOGIN_RES,
    VERSIONUPDATA_REQ,  // ç‰ˆæœ¬æ›´æ–°è¯·æ±‚
    VERSIONUPDATA_RES,
    VERSIONNUM_REQ,     //版本号请求
    VERSIONNUM_RES,
    UPLOAD_FILE_REQ,
    UPLOAD_FILE_RES,
    VERSIONINFOENTRY_REQ,    //版本信息条目
    VERSIONINFOENTRY_RES
    //自动升级
    VERSION_NUM_REQ,  // ç‰ˆæœ¬å·è¯·æ±‚
    VERSION_NUM_RES,   // ç‰ˆæœ¬å·å“åº”
    UPLOAD_FILE_REQ, // ä¸Šä¼ æ–‡ä»¶çš„请求
    UPLOAD_FILE_RES, // ä¸Šä¼ æ–‡ä»¶çš„响应
    VERSION_INFOENTRY_REQ,       // ç‰ˆæœ¬ä¿¡æ¯å½•入请求
    VERSION_INFOENTRY_RES,       //版本信息录入响应
    VERSION_UPDATE_REQ, // ç‰ˆæœ¬æ›´æ–°è¯·æ±‚
    VERSION_UPDATE_RES, // ç‰ˆæœ¬æ›´æ–°å“åº”
    FILE_DOWNLOADS_REQ, // ç‰ˆæœ¬æ›´æ–°æ–‡ä»¶ä¸‹è½½è¯·æ±‚
    FILE_DOWNLOADS_RES, // ç‰ˆæœ¬æ›´æ–°æ–‡ä»¶ä¸‹è½½å“åº”
    DOWNLOAD_SUCCESSFULLY_RES,       // æ›´æ–°æ–‡ä»¶ä¸‹è½½æˆåŠŸçš„å“åº”
};
struct Head
{
    int type;   // åŠŸèƒ½ç±»åž‹ï¼Œè§£å†³æ¯ä¸ªåŒ…çš„å…·ä½“ä½œç”¨ï¼ŒåŒºåˆ†ä¸šåŠ¡
    int len;    //封包长度
};
// ç™»å½•业务
// ç™»å½•请求
struct LoginReq
{
    Head head;
    char user_name[32];
    char password[32];
    LoginReq(){
        head.type=LOGIN_REQ;
        head.len=sizeof(LoginReq);
    }
};
//登录权限结构体
struct PermissionInfo
{
    int admin;  //管理员
    int history; //历史查看
    int version_manager;//版本管理
    int log_search; //日志查看
    int flaw_mark ; //缺陷标记
struct Head{
    int type;
    int len;
};
//登录响应
struct LoginRes
//自动升级
struct VersionNumReq        // ç‰ˆæœ¬å·è¯·æ±‚
{
    Head head;
    char user_name[32];
    int state; // ç™»å½•状态
    PermissionInfo per;
    LoginRes(){
        head.type=LOGIN_RES;
        head.len=sizeof(LoginRes);
    VersionNumReq() {
        head.type = VERSION_NUM_REQ;
        head.len = sizeof(VersionNumReq);
    }
};
struct VersionUpdataReq //版本更新请求的结构体
struct VersionNumRes        // ç‰ˆæœ¬å·å“åº”
{
    Head head;
    VersionUpdataReq(){
        head.type=VERSIONUPDATA_REQ;
        head.len=sizeof(VersionUpdataReq);
    char versionId[64]; // ç‰ˆæœ¬å·
    VersionNumRes() {
        head.type = VERSION_NUM_RES;
        head.len = sizeof(VersionNumRes);
    }
};
struct VersionUpdataRes //版本更新响应的结构体
{
    Head head;
    char version_id[64];    // ç‰ˆæœ¬å·
    char update_date[32];   //更新时间
    char file_path[128];   //服务端提供最新版本的本地路径
    VersionUpdataRes(){
        head.type=VERSIONUPDATA_REQ;
        head.len=sizeof(VersionUpdataReq);
    }
};
struct VersionNumReq    //版本号请求
{
    Head head;
    VersionNumReq(){
        head.type=VERSIONNUM_REQ;
        head.len=sizeof(VersionNumReq);
    }
};
struct VersionNumRes
{
    Head head;
    char version_id[64];
    VersionNumRes(){
        head.type=VERSIONNUM_RES;
        head.len=sizeof(VersionNumRes);
    }
};
//文件传输功能
// æ–‡ä»¶ä¼ è¾“
struct FileInfo
{
    char file_name[256];
    long long file_size;
    char s_filepath[32];
    char content[0];    //柔性数组结构体
    char fileName[256];
    long long fileSize;
    char s_filepath[128];
    char content[0];
};
struct UploadFileReq
struct UploadFileReq        // ä¸Šä¼ æ–‡ä»¶çš„请求
{
    Head head;
    FileInfo fileInfo;
    UploadFileReq(){
        head.type=UPLOAD_FILE_REQ;
        head.len=sizeof(UploadFileReq);
    UploadFileReq() {
        head.type = UPLOAD_FILE_REQ;
        head.len = sizeof(UploadFileReq);
    }
};
struct UploadFileRes
{
    Head head;
   int status;
   long long file_size;     //总大小
   long long file_cuesize;  //文件已传大小
    UploadFileRes(){
        head.type=UPLOAD_FILE_RES;
        head.len=sizeof(UploadFileRes);
    }
};
//版本信息录入---版本信息条目
struct VersionInfoEntryReq
{
   Head head;
   char version_id[64];
   char version_id_old[64];
   char s_filepath[32];     //服务器放最新版本的路径
   char version_description[256];   //更新描述
   char version_creattime[32];  //更新时间
   char filename[16][128];      //支持多文件上传
   long long filesize[16];      //文件组的大小
   char c_filepath[16][128];    //客户端的安装路径
   int filenum;     //一次版本更新所需文件个数
   VersionInfoEntryReq(){
        head.type=VERSIONINFOENTRY_REQ;
        head.len=sizeof(VersionInfoEntryReq);
struct UploadFileRes {      // ä¸Šä¼ æ–‡ä»¶çš„响应
    Head head;
    bool state = false;
    char fileName[256];
    long long file_size;
    UploadFileRes()
    {
        head.type = UPLOAD_FILE_RES;
        head.len = sizeof(UploadFileRes);
    }
};
//响应
// ç‰ˆæœ¬ä¿¡æ¯å½•å…¥
// è¯·æ±‚
//struct VersionInfoEntryReq {
//   Head head;
//   char version_id[64]; // ç‰ˆæœ¬å·
//   char version_id_old[64]; // ä¸Šä¸€ä¸ªç‰ˆæœ¬å·
//   char s_filepath[32];   //服务器放最新版本的路径
//   char version_description[256]; //更新内容
//   char version_creattime[32]; // æ›´æ–°æ—¶é—´
//   char filename[16][128];
//   long long filesize[16];
//   char c_filepath[16][128];
//   int fileNum;
//   VersionInfoEntryReq()
//   {
//      head.type = VERSIONINFOENTRY_REQ;
//      head.len = sizeof(VersionInfoEntryReq);
//   }
//};
struct VersionInfoEntryReq {
    Head head;
    char versionId[64]; // ç‰ˆæœ¬å·
    char versionIdOld[64]; // ä¸Šä¸€ä¸ªç‰ˆæœ¬å·
    int fileNum;
    char context[0];      //包含下载文件信息
    VersionInfoEntryReq()
    {
        head.type = VERSION_INFOENTRY_REQ;
        head.len = sizeof(VersionInfoEntryReq);
    }
};
// ç‰ˆæœ¬ä¿¡æ¯å½•入响应
struct VersionInfoEntryRes {
    Head head;
    char version_id_old[64]; // ç‰ˆæœ¬å·
    bool state = false;
    VersionInfoEntryRes()
    {
        head.type = VERSIONINFOENTRY_RES;
        head.type = VERSION_INFOENTRY_RES;
        head.len = sizeof(VersionInfoEntryRes);
    }
};
// ç‰ˆæœ¬æ›´æ–°è¯·æ±‚
struct VersionUpdateReq {
    Head head;
    char curVersionId[64]; // ç‰ˆæœ¬å·
    VersionUpdateReq()
    {
        head.type = VERSION_UPDATE_REQ;
        head.len = sizeof(VersionUpdateReq);
    }
};
// ç‰ˆæœ¬æ›´æ–°å“åº”
struct VersionUpdateRes {
    Head head;
    bool state = false;
    char versionId[64]; // ç‰ˆæœ¬å·
    char updateDate[32]; // æ›´æ–°æ—¶é—´
    char versionDescription[1024]; //更新描述
    VersionUpdateRes()
    {
        head.type = VERSION_UPDATE_RES;
        head.len = sizeof(VersionUpdateRes);
    }
};
// ç‰ˆæœ¬æ›´æ–°æ–‡ä»¶ä¸‹è½½è¯·æ±‚
struct FileDownloadsReq {
    Head head;
    char versionId[64]; // ç‰ˆæœ¬å·
    FileDownloadsReq()
    {
        head.type = FILE_DOWNLOADS_REQ;
        head.len = sizeof(FileDownloadsReq);
    }
};
// ç‰ˆæœ¬æ›´æ–°æ–‡ä»¶ä¸‹è½½å“åº”
struct FileDownloadsRes {
    Head head;
    char versionId[64]; // ç‰ˆæœ¬å·
    char filename[128]; //文件名
    long long filesize; //文件大小
    char c_filepath[128];   //客户端放最新版本的本地路径
    int fileNum; // æ–‡ä»¶æ•°é‡
    long long allFileSize; // æ–‡ä»¶æ€»å¤§å°
    char content[0];
    FileDownloadsRes()
    {
        head.type = FILE_DOWNLOADS_RES;
        head.len = sizeof(FileDownloadsRes);
    }
};
// æ›´æ–°æ–‡ä»¶ä¸‹è½½æˆåŠŸçš„å“åº”
struct DownloadSuccessfullyRes {
    Head head;
    bool state = false;
    char fileName[256];
    long long fileSize;
    DownloadSuccessfullyRes()
    {
        head.type = DOWNLOAD_SUCCESSFULLY_RES;
        head.len = sizeof(DownloadSuccessfullyRes);
    }
};