😏★,°:.☆( ̄▽ ̄)/$:.°★ 😏
这篇文章主要介绍开源项目——Web文件服务器。
无专精则不能成,无涉猎则不能通。。——梁启超
欢迎来到我的博客,一起学习,共同进步。
喜欢的朋友可以关注一下,下次更新不迷路🥞
文章目录
- :smirk:1. 项目介绍
- :blush:2. 源码分析
- :satisfied:3. 项目总结
😏1. 项目介绍
项目Github地址:https://github.com/shangguanyongshi/WebFileServer
该项目实现的功能有:
1.以 HTML 页面形式返回该文件夹下的所有文件
2.可以选择本地文件上传到服务器
3.可以对列表中的文件文件执行下载操作
4.可以删除服务器中的指定文件
简单来说,就是通过http协议实现文件上传、查看和下载、删除操作。
编译运行:
make && ./main
# 在浏览器输入127.0.0.1:8888即可访问
# 默认ip和端口是这个,可以修改,部署在服务器上做个简单的文件存储
😊2. 源码分析
下面进行源码分析:
使用 Reactor 事件处理模型,通过统一事件源,主线程使用 epoll 监听所有的事件,工作线程负责执行事件的逻辑处理
预先创建线程池,当有事件发生时,加入线程池的工作队列中,使用随机选择算法选择线程池中的一个线程处理工作队列的事件
使用 HTTP GET 方法获取文件列表,发起下载文件、删除文件的请求。使用 POST 方法向服务器上传文件
服务端使用有限状态机对请求消息进行解析,根据解析结果执行操作后,向客户端发送页面、发送文件或发送重定向报文
服务端使用 sendfile 函数实现零拷贝数据发送
😆3. 项目总结
下面进行一下总结:
以上。