X_FTP_server
手写FTP服务器-C++实现FTP服务器
项目Gitee链接:https://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 https://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++继承和虚继承,适当解耦
------------恢复内容结束------------