【项目】手写FTP服务器-C++实现FTP服务器

X_FTP_server

手写FTP服务器-C++实现FTP服务器
项目Gitee链接://gitee.com/hsby/ftp_Server

简介

一个基于libevent的高并发FTP服务器,作者 汉森伯逸

目录介绍:

code:源代码,其中主要代码目录为 code/X_FTP_server/src

doc: 项目文档目录

libs:依赖库,主要为openssl和libevent

在线体验:

47.119.134.217:21, 匿名登录即可

文档

Part I Part II Part III Part IV Part V Part VI Part VII
项目背景 并发模型 主要流程 整体架构 遇到的问题 并发测试 相关知识

开发工具

  • 操作系统: CentOS Linux 7.7.1908 (Core) 和 Window10
  • 开发工具: Vim 、VS2017
  • 编译器: g++ 4.8.0
  • 版本控制: git
  • 工程构建: make、VS2017
  • 调试工具: gdb
  • 压测工具: Jmeter

使用方式(服务器端)

Linux:

git clone //gitee.com/hsby/ftp_Server
tar -zxvf libs/lib_and_include.tar.gz -C /usr/local/
echo "/usr/local/lib" >> /etc/ld.so.conf
ldconfig
./FTP_server

注意不能少去第2和第3步,否则缺少libevent.so

Windows:

直接打开FTP_server.exe

技术要点

  • 并发模型为Reactor
  • 使用libevent默认的epollLT触发+EPOLLONESHOT
  • 为充分利用多核CPU的性能,以多线程的形式实现服务器,并实现线程池避免线程频繁创建销毁造成的系统开销
  • 实现基于libevent的定时器,用于断开超时连接
  • 增量开发,利用C++继承和虚继承,适当解耦

————恢复内容结束————