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