迷你网盘

前言:

迷你网盘是一个小项目,本质上是一个http服务器,在这个http服务器汇总实现文件上传,下载,展示功能。在下载功能中使用http协议拓展出断点续传输、分块传输功能。最终实现出一个迷你网盘。

这个文件上传下载使用的是http协议,因为它用的多,在做项目的过程中,可以增强对http协议的理解。

目录

前言:

整体框架:

http服务端设计

http响应处理

http请求处理

任务对象设计

线程池设计

文件上传的CGI请求处理

文件上传程序

服务器所需要主要对象


整体框架:

  1. 建立tcp服务端程序;
  2. 是为新的客户端建立线程池任务并添加到线程池中,因此我们还要创建一个线程池;
  3. 线程池中的线程获取任务;
  4. 接收http请求数据;
  5. 解析http请求数据;
  6. 判断请求类型;

请求类型有三种:

  1. 文件列表请求
  2. 文件下载请求
  3. 文件上传请求

http服务端设计

  1. 创建爱你socket
  2. 绑定地址信息
  3. 开始监听
  4. 获取已连接成功的客户端socket
  5. 服务端程序的业务处理--->创建线程任务,将任务添加到线程池中

http响应处理

迷你网盘

http请求处理

迷你网盘

任务对象设计

  1. 任务处理函数
  2. 任务处理参数

线程池设计

  1. 创建线程
  2. 创建线程安全的任务队列--->任务入队,处理完毕后任务出队
  3. 线程池终止

文件上传的CGI请求处理

迷你网盘

文件上传程序

迷你网盘

服务器所需要主要对象

迷你网盘