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

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