| | |
| | | #ifndef TCPDATATYPE_H |
| | | #define TCPDATATYPE_H |
| | | /* */ |
| | | |
| | | /* |
| | | * 客户端与服务器交互的动作类型枚举 |
| | | * 注意:使用 enum class 避免命名冲突(C++11特性) |
| | | */ |
| | | enum class ActionType |
| | | { |
| | | HeartCheck = 100, |
| | | Login = 110, |
| | | Register = 120, |
| | | Msg = 200, |
| | | Download = 300 |
| | | HeartCheck = 100, // 心跳检测(保持连接活性) |
| | | Login = 110, // 登录请求 |
| | | Register = 120, // 注册请求 |
| | | Msg = 200, // 普通消息传输 |
| | | Download = 300 // 文件下载请求 |
| | | }; |
| | | /* ο HTTP Ӧ */ |
| | | |
| | | /* |
| | | * HTTP风格响应状态码(简化版) |
| | | * 用于服务器向客户端返回操作结果状态 |
| | | */ |
| | | enum class ResponseCode |
| | | { |
| | | ResponseOK = 200, // ɹ |
| | | BadRequest = 400, // ͻ |
| | | Unauthorized = 401, // Ҫ û ֤ |
| | | Forbidden = 403, // ͻ ˵ Ǿܾ ִ д |
| | | NotFound = 404, // ҵ Դ |
| | | MethodNotAllowed = 405 // ͻ еķ ֹ |
| | | |
| | | ResponseOK = 200, // 成功(OK) |
| | | BadRequest = 400, // 错误请求(客户端请求语法错误) |
| | | Unauthorized = 401, // 未授权(需要身份验证) |
| | | Forbidden = 403, // 禁止访问(权限不足) |
| | | NotFound = 404, // 未找到(请求资源不存在) |
| | | MethodNotAllowed = 405 // 方法不允许(如用GET请求POST接口) |
| | | }; |
| | | /* Ϣ */ |
| | | |
| | | /* |
| | | * 通用消息头结构(所有数据包必须包含) |
| | | * 作用:标识消息类型和基本信息 |
| | | */ |
| | | struct Head |
| | | { |
| | | ActionType type; |
| | | int len; |
| | | int version; |
| | | ActionType type; // 消息类型(对应ActionType枚举) |
| | | int len; // 整个数据包的长度(字节数) |
| | | int version; // 协议版本号(用于兼容性控制) |
| | | |
| | | // 构造函数(初始化时必须提供三个参数) |
| | | Head(ActionType ptype, int plen, int pversion) |
| | | { |
| | | len = plen; |
| | |
| | | version = pversion; |
| | | } |
| | | }; |
| | | struct HeartCheckReq // |
| | | |
| | | /* |
| | | * 心跳检测请求结构 |
| | | * 特点:固定类型和长度(不需要额外数据) |
| | | */ |
| | | struct HeartCheckReq |
| | | { |
| | | ActionType type; |
| | | int len; |
| | | ActionType type; // 固定为ActionType::HeartCheck |
| | | int len; // 结构体自身大小 |
| | | |
| | | HeartCheckReq() |
| | | { |
| | | type = ActionType::HeartCheck; |
| | | len = sizeof(HeartCheckReq); |
| | | len = sizeof(HeartCheckReq); // 自动计算结构体大小 |
| | | } |
| | | }; |
| | | |
| | | struct HeartCheckRes // Ӧ |
| | | /* |
| | | * 心跳检测响应结构 |
| | | * 注意:与请求结构相同(实际可能包含服务器状态信息) |
| | | */ |
| | | struct HeartCheckRes |
| | | { |
| | | ActionType type; |
| | | int len; |
| | | ActionType type; // 固定为ActionType::HeartCheck |
| | | int len; // 结构体自身大小 |
| | | |
| | | HeartCheckRes() |
| | | { |
| | | type = ActionType::HeartCheck; |
| | | len = sizeof(HeartCheckRes); |
| | | } |
| | | }; |
| | | |
| | | /* |
| | | * 用户注册请求结构 |
| | | * 组成:消息头 + 用户信息字段 |
| | | */ |
| | | struct RegisterRequest |
| | | { |
| | | Head head; |
| | | char name[64]; |
| | | char password[64]; |
| | | char email[32]; |
| | | char phone[32]; |
| | | Head head; // 必须包含的消息头 |
| | | char name[64]; // 用户名(固定长度64字节) |
| | | char password[64];// 密码(建议加密存储) |
| | | char email[32]; // 邮箱(用于找回密码) |
| | | char phone[32]; // 手机号(可选验证) |
| | | }; |
| | | |
| | | /* |
| | | * 用户登录请求结构 |
| | | * 注意:比注册请求少邮箱和手机字段 |
| | | */ |
| | | struct LoginRequest |
| | | { |
| | | |
| | | Head head; |
| | | char name[64]; |
| | | char password[64]; |
| | | Head head; // 消息头(type应为ActionType::Login) |
| | | char name[64]; // 用户名 |
| | | char password[64];// 密码(建议加密传输) |
| | | }; |
| | | #endif |
| | | |
| | | #endif // TCPDATATYPE_H |