# ftp_py **Repository Path**: jkeykey/ftp_py ## Basic Information - **Project Name**: ftp_py - **Description**: 基于python的套接字对象和面向对象的知识编写的模拟FTP的项目. - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2021-05-07 - **Last Updated**: 2024-03-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 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 # 服务端启动程序 **[好基友刘洋赞助][https://www.cnblogs.com/yang1333/articles/11807531.html]**