项目笔记 | 基于自建http协议的共享目录服务器

本文介绍了如何使用自建的HTTP协议实现一个文件共享服务器,包括TCP服务器的搭建、请求解析、文件上传与下载(支持断点续传)、目录列表展示。服务器通过EPOLL进行事件监控,使用CGI处理并发请求,利用Boost库处理文件信息。
摘要由CSDN通过智能技术生成

前言

百度网盘存储功能方便了我们存储资料不仅限于物理设备,但是对于普通用户难以忍受限速的操作。在学习了网络编程之后,决定自己写一个基于http协议的共享目录,方便客户端将文件目录上传到服务端,支持目录列表展示,文件上传,文件下载,断点续传。

1. 框架流程

跟着想法画的,难免有些粗糙:

对流程总结一下:

  • 搭建tcp服务器,用epoll进行事件监控
  • 判断事件是监听事件时,放置线程池任务队列,调用任务处理函数
  • 任务处理函数,分为,http请求解析,随后对组织http响应返回给web端
  • 对http请求的方法和参数,路径进行判断

1.如果时GET方法,且有参数,或者POST请求,执行CGI
2.如果为GET方法,查询路径不为空 即为 列表展示否则就是文件下载

3. 请求解析

  1. 先接受整个头部信息,判断有没有空行,如果有则表示整个头部信息接受完整
  2. 通过找到换行符\r\n,划分首行和头部。
  3. 在头部里找到Content-Length字段,即可知道正文长度,后续方便接受正文。

3.1 首行解析

  1. 首先找到空格出现的地方,前面就是请求方
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值