【項目】手寫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++繼承和虛繼承,適當解耦

————恢復內容結束————