前言
百度网盘存储功能方便了我们存储资料不仅限于物理设备,但是对于普通用户难以忍受限速的操作。在学习了网络编程之后,决定自己写一个基于http协议的共享目录,方便客户端将文件目录上传到服务端,支持目录列表展示,文件上传,文件下载,断点续传。
1. 框架流程
跟着想法画的,难免有些粗糙:
对流程总结一下:
- 搭建tcp服务器,用epoll进行事件监控
- 判断事件是监听事件时,放置线程池任务队列,调用任务处理函数
- 任务处理函数,分为,http请求解析,随后对组织http响应返回给web端
- 对http请求的方法和参数,路径进行判断
1.如果时GET方法,且有参数,或者POST请求,执行CGI
2.如果为GET方法,查询路径不为空 即为 列表展示否则就是文件下载
3. 请求解析
- 先接受整个头部信息,判断有没有空行,如果有则表示整个头部信息接受完整
- 通过找到换行符\r\n,划分首行和头部。
- 在头部里找到Content-Length字段,即可知道正文长度,后续方便接受正文。
3.1 首行解析
- 首先找到空格出现的地方,前面就是请求方