Skip to content

Astronaut-diode/FileWebServer

 
 

Repository files navigation

FileWebServer

Introduce

本项目为C++11编写的文件服务器,使用有限状态机解析HTTP请求,支持用户注册、用户登陆、上传文件、共享文件、改变位置、下载文件,拷贝文件等功能。

Technical points

  • 用状态机解析HTTP 1.1请求报文,支持GET/POST两种请求方式;
  • 采用信号及升序链表管理定时器系统,统一事件源,处理非活动连接;
  • 采用线程池+非阻塞socket+I/O多路复用实现Reactor以及Proactor两种并发模型;
  • 采用连接池,基于MySQL实现用户信息持久化;
  • 采用生产者-消费者模型,实现异步/同步日志系统,记录服务器运行状态;
  • 访问服务器数据库实现用户注册、登录、上传、下载、分享等功能;

Demo演示

default.mp4

Environment

  • OS: Ubuntu 18.04
  • MySQL: 5.7.42
  • Redis: 4.0.9
  • Compiler: g++ 7.5
  • 浏览器测试:Windows、Linux下使用Chrome、Edge、FireFox均可。

Usage

  1. 创建FileWebServer数据库。

    create database FileWebServer character set utf8mb4 collate utf8mb4_unicode_ci;
  2. make # 进行编译
  3. ./FileWebServer
  4. 浏览器端访问端口号默认使用7777 IP地址:端口号/register.html进行注册,IP地址:端口号/login.html进行登录。

Maintainers

@Astronaut-diode

浙江工业大学 软件工程专业硕士在读

邮箱地址:[email protected]

致谢

TinyWebServer

About

类似于网盘的文件服务器

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Languages

  • C++ 84.8%
  • C 7.9%
  • HTML 3.2%
  • Makefile 2.3%
  • Roff 1.5%
  • CMake 0.3%