【python练习】基于socket的FTP程序 v1.1.0(支持多用户)

时间:2022-08-29 12:01:32

增加功能

1.在FTP(1.0.0)的基础上,支持了多并发的功能
2.允许配置最大并发数,比如允许只有10个并发用户

程序功能:

本程序模拟实现了一个FTP程序:
1.程序分为客户端和服务端
2.用户可以登录和注册账号,登录密码有MD5加密
3.每个用户有自己的家目录 ,且只能访问自己的家目录
4.用户可以随意切换目录(仅限自己的家目录)
5.允许用户查看当前目录下文件
6.允许上传和下载文件,保证文件一致性(md5),(不允许下载/上传文件夹,会出现不可恢复bug,用户配置文件需要重置。时间原因没有加判断)
7.文件传输过程中显示进度条
8.支持文件上传、下载的断点续传

测试:

数据为空,需要手动创建添加
1.需要自行注册账号
2.本地上传的文件,应放在client\db\用户名\uploads中
3.下载的文件会自动存储在client\db\用户名\downloas中
4.不能下载/上传文件夹,会出现不可恢复bug

程序结构:

仅在core下添加了MyThreadPool.py

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         # 主逻辑交互程序
    │   ├── MyThreadPool.py # 线程池
    │   └── register.py     # 注册模块
    ├── db #用户数据存储的地方
    │   ├── accounts.ini  # 用户配置文件,存放账号、密码(MD5)
    │   └── disk # 存放各用户上传\下载文件
    │        ├── 用户名文件1 # 用户名文件
    │        │       ├── downloads # 下载的文件存放目录
    │        │       └── uploads # 需要上传的文件目录
    │        └── 用户名文件2 # 用户名文件
    │                ├── downloads # 下载的文件存放目录
    │                └── uploads # 需要上传的文件目录
    └── logs #日志目录
    │   ├── init.py
    │   └── access.log #用户访问和操作的相关日志
    └── FTP_server # server端程序主入口