会议记录
1.明确分组情况,成员介绍
2.明确项目秩序,项目期间规章制度
3.需求分析(客户端部分)
功能 | 内容 |
---|---|
系统启动 | 本地云启动,初始化界面,软件版本以及其他初始化数据同步 |
用户注册 | 用户输入用户名、密码、密保手机号,注册一个新账号 |
用户登录 | 用户输入用户名、密码,登录到服务器获取用户储存的文件列表 |
修改密码 | 用户输入用户名、旧密码、新密码,完成修改密码 |
找回密码 | 用户输入用户名、密保手机,发送到服务器获取密码 |
文件列表 | 获取当前文件夹下应该出现的文件列表 |
文件上传 | 上传文件到指定文件夹 |
文件下载 | 从指定文件夹下载文件 |
本地下载文件管理 | 下载之后的文件应由本地文件夹管理 |
通信记录 | 文件上传纪录、下载纪录获取 |
文件共享 | 生成链接与提取码,可将文件分享给其他用户 |
系统设置 | 配置服务的ip地址与端口等设置 |
注:文件下载部分使用多线程下载,客户端自行保留历史记录。
4.明确协议包内容
/************接入层数据包头************/
typedef struct packet_header_st
{
int fd;//用于前后端通信即目标客户端fd(服务器用到)
int funcId; // 功能号
//登录包0x01,注册包0x02,找回密码0x03,修改密码0x04
//客户端获取文件列表0x11,上传文件0x12,下载文件0x13,共享文件0x14
//心跳0x21
int optid; // 操作码:请求0x00 和 应答0x01
int usrlenth;// 包体的长度
int packet_seq; //包序号
int packet_sum; //包总数
char srcAddr[6]; //预留
char dstAddr[6]; //预留
int syn; // 判断包头是否正确 0x04
}packet_header_t;
/************接入层数据包尾************/
typedef struct packet_tali_st//包尾,用来验证数据包的完整性
{
int pack_tail;//设置为0x05
}packet_tali_t;
/************数据包报文整体************/
typedef struct packet_all_st
{
packet_header_t head;
char body[packet_header_t::usrlenth];
packet_tali_st tail;
//unsigned len; //要发送的数据有效长度
}packet_all_st;
/************业务层数据包体************/
//客户端登录请求包
typedef struct login
{
int id;
char psw[10]; //密码
}Login_t;
//登录应答包
typedef struct res_login_st
{
int login_ret; //登录结果: 1-登录成功,0-登录失败
}res_login_t;
//客户端注册请求包
typedef struct Register
{
int id; //账号
char tel[12]; //11位手机号
char psw[10]; //密码
}Register_t;
//注册应答包
typedef struct res_register_st
{
int register_ret; //注册结果: 0-注册成功,1-注册失败
}res_register_t;
//客户端修改密码请求包
typedef struct Change_PWD
{
int id; //账号
char psw[10]; //密码
}c_pwd_t;
//改密码应答包
typedef struct res_changepwd_st
{
int change_ret; //改密码结果: 0-改密码成功,1-改密码失败
}res_cpwd_t;
//找回密码请求包
typedef struct findpwd
{
int id;
char tel[12];
}F_Pwd_t;
//找回密码应答包
typedef struct res_findpwd_st
{
int find_ret; //找回结果: 0-找回成功,1-找回失败
char pwd[20]; //密码
}res_fpwd_t;
/************请求业务交易流水请求包************/
//上传文件请求包
typedef struct UpFile
{
int user_id;
}UpFile_t;
//下载视频请求包
typedef struct Download_File
{
int user_id; //用户ID
char *file_id; //文件id
}Download_t;
//文件列表请求包
typedef struct File_List
{
char *dir_id; //目录id
}FileList_t;
//文件列表应答包
typedef struct Res_VideoList
{
char V[800];
}res_filelist;