# X_FTP_SERVER **Repository Path**: scada/ftp_Server ## Basic Information - **Project Name**: X_FTP_SERVER - **Description**: No description available - **Primary Language**: C++ - **License**: BSD-3-Clause - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-04-22 - **Last Updated**: 2021-04-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## X_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 | | :---------------------------: | :---------------------------: | :---------------------------: | :---------------------------: | :-------------------------------: | :---------------------------: | :---------------------------: | | [项目背景](./doc/项目背景.md) | [并发模型](./doc/并发模型.md) | [主要流程](./doc/主要流程.md) | [整体架构](./doc/整体架构.md) | [遇到的问题](./doc/遇到的问题.md) | [并发测试](./doc/并发测试.md) | [相关知识](./doc/相关知识.md) | ## 开发工具 - **操作系统**: CentOS Linux 7.7.1908 (Core) 和 Window10 - **开发工具**: Vim 、VS2017 - **编译器**: g++ 4.8.0 - **版本控制**: git - **工程构建**: make、VS2017 - **调试工具**: gdb - **压测工具**: Jmeter ## 使用方式(服务器端) #### Linux: ```shell 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++继承和虚继承,适当解耦