1. 程式人生 > >【python練習】基於socket的FTP程序(僅支持單用戶)

【python練習】基於socket的FTP程序(僅支持單用戶)

查看 切換目錄 md5加密 查看當前目錄 傳輸 conf 存儲 settings ces

程序功能

本程序模擬實現了一個FTP程序:
1.程序分為客戶端和服務端
2.用戶可以登錄和註冊賬號,登錄密碼有MD5加密
3.每個用戶有自己的家目錄 ,且只能訪問自己的家目錄
4.用戶可以隨意切換目錄(僅限自己的家目錄)
5.允許用戶查看當前目錄下文件
6.允許上傳和下載文件,保證文件一致性(md5),(不允許下載/上傳文件夾,會出現不可恢復bug,用戶配置文件需要重置。時間原因沒有加判斷)
7.文件傳輸過程中顯示進度條
8.支持文件上傳、下載的斷點續傳

測試:

數據為空,需要手動創建添加
1.需要自行註冊賬號
2.本地上傳的文件,應放在client\db\用戶名\uploads中
3.下載的文件會自動存儲在client\db\用戶名\downloas中
4.不能下載/上傳文件夾,會出現不可恢復bug

程序結構:

FTP/
└── ├── README 
    ├── client # 客戶端程序目錄
    └── server # 服務端程序目錄
FTP/client/
└── ├── conf # 配置文件
    │   ├── init.py
    │   └── settings.py
    ├── core # 主要程序邏輯都
    │   ├── init.py
    │   ├── login.py        # 登陸模塊
    │   ├── main.py         # 主邏輯交互程序
    │   └── register.py     # 註冊模塊
    ├── db #用戶數據存儲的地方
    │    └── disk # 存放各用戶上傳\下載文件
    │       ├── 用戶名文件1 # 用戶名文件
    │       │       ├── downloads # 下載的文件存放目錄
    │       │       └── uploads # 需要上傳的文件目錄
    │       └── 用戶名文件2 # 用戶名文件
    │               ├── downloads # 下載的文件存放目錄
    │               └── uploads # 需要上傳的文件目錄
    └── FTP_client # client端程序主入口
FTP/server/
└── ├── conf # 配置文件
    │   ├── init.py
    │   └── settings.py
    ├── core # 主要程序邏輯都
    │   ├── init.py
    │   ├── logger.py       # 日誌記錄模塊
    │   ├── login.py        # 登陸模塊
    │   ├── main.py         # 主邏輯交互程序
    │   └── register.py     # 註冊模塊
    ├── db #用戶數據存儲的地方
    │   ├── accounts.ini  # 用戶配置文件,存放賬號、密碼(MD5)
    │   └── disk # 存放各用戶上傳\下載文件
    │        ├── 用戶名文件1 # 用戶名文件
    │        │       ├── downloads # 下載的文件存放目錄
    │        │       └── uploads # 需要上傳的文件目錄
    │        └── 用戶名文件2 # 用戶名文件
    │                ├── downloads # 下載的文件存放目錄
    │                └── uploads # 需要上傳的文件目錄
    └── logs #日誌目錄
    │   ├── init.py
    │   └── access.log #用戶訪問和操作的相關日誌
    └── FTP_server # server端程序主入口

【python練習】基於socket的FTP程序(僅支持單用戶)