1. 需求
1. 用户加密认证
2. 允许多用户登录
3. 每个用户都有自己的家目录,且只能访问自己的家目录
4. 对用户进行磁盘分配,每一个用户的可用空间可以自己设置
5. 允许用户在ftp server上随意切换目录
6. 允许用户查看自己家目录下的文件
7. 允许用户上传和下载,保证文件的一致性(md5)
8. 文件上传、下载过程中显示进度条
9. 支持多并发的功能
10. 使用队列queue模块,实现线程池
11. 允许用户配置最大的并发数,比如允许只有10并发用户
升级需求:10%
1. 文件支持断点续传
2. 开发环境
Python 3.7.3
3. 软件开发
![]()
客户端:
|-conf
|-setting.py # 配置文件,存放服务端ip和port, 客户端下载文件的目录等
|-core
|-main.py # FTP客户端功能
|-files # 用户下载, 上传文件的存放目录
|-.download # 目录存放用户未下载完的文件的配置文件
|-ftp_client.py # 客户端启动程序
服务端:
|-conf
|-settings.py # 配置文件,存放服务端ip和port, 用户目录及用户账户, 日志目录, 与用户确认交互的状态码, 日志配置文件等等
|-accounts.ini # 用户账户相关的信息
|-core
|-handler_request.py # 专门处理服务端就与客户端的请求, 以及命令
|-main.py # FTP服务端专门与客户端建立连接
|-management.py # 管理FTP的的启动, 停止, 重启等
|-mythreadpool.py # 使用queue实现的简单版的线程池, 缺点: 线程不能重复利用
|-home
|-egon # 用户家目录,每一个用户以用户名作为家目录
|-.upload # 目录存放用户未上传完的文件的配置文件信息
|-.... # 每个用户下都有: 用户家目录,每一个用户以用户名作为家目录
|-.upload # 每个用户下都有: 用户未上传完的文件的配置文件信息
|-ftp_client.py # 服务端启动程序
目录结构