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                 # 服务端启动程序
目录结构 

相关文章: