作业题目: 开发一个支持多用户在线的FTP程序
-
作业需求:
要求 1.用户加密认证(已实现) 2.允许同时多用户登录 3.每个用户有自己的家目录 ,且只能访问自己的家目录(已实现) 4.对用户进行磁盘配额,每个用户的可用空间不同 5.允许用户在ftp server上随意切换目录(已实现) 6.允许用户查看当前目录下文件(已实现) 7.允许上传和下载文件,保证文件一致性(md5)(已实现) 8.文件传输过程中显示进度条(已实现) 9.附加功能:支持文件的断点续传(已实现)
FTP实现实现并发,在main模块里进行修改,增加了mytherad.py
1.在之前开发的FTP基础上,开发支持多并发的功能 2.不能使用SocketServer模块,必须自己实现多线程 3.必须用到队列Queue模块,实现线程池 4.允许配置最大并发数,比如允许只有10个并发用户
C:.
│ RAMDE
│
│ __init__.py
│
├─ftpclient
│ ..bak
│ ..dat
│ ..dir
│ a.txt
│ client.py -- 客户端
│ __init__.py
│
└─ftpserver
│ __init__.py
│
├─bin
│ server.py ----- 启动文件
│ __init__.py
│
├─conf
│ │ account.ini ---- 用户数据
│ │ setting.py ----- 配置文件
│ │ __init__.py
│ │
│ └─__pycache__
│ setting.cpython-36.pyc
│ __init__.cpython-36.pyc
│
├─core
│ │ logger.py ---- 日志
│ │ main.py ----- 主程序
│ │ main_server.py --- 解析命令
│ │ mythread.py --- 实现线程,定义线程池
│ │
│ └─__pycache__
│ logger.cpython-36.pyc
│ main.cpython-36.pyc
│ main_server.cpython-36.pyc
│ __init__.cpython-36.pyc
│
├─home
│ │ __init__.py
│ │
│ └─alex ---- 主目录
│ a.txt
│
│
└─log --- 日志文件
注:需要在cmd上运行程序,否则会报错,服务端:python server.py start 客户端:python client.py -s ip地址 -P 端口
server.py
1 #!/usr/bin/env python3 2 # -*- coding:utf-8 -*- 3 import os 4 import sys 5 6 7 BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 8 sys.path.append(BASE_DIR) 9 10 if __name__ == '__main__': 11 from core import main_server 12 argv_parser = main_server.Mangement(sys.argv) 13 argv_parser.execute()