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++繼承和虛繼承,適當解耦
------------恢復內容結束------------