作业:

开发一个支持多用户在线的FTP程序

要求:

  1. 用户加密认证
  2. 允许同时多用户登录
  3. 每个用户有自己的家目录 ,且只能访问自己的家目录
  4. 对用户进行磁盘配额,每个用户的可用空间不同
  5. 允许用户在ftp server上随意切换目录
  6. 允许用户查看当前目录下文件
  7. 允许上传和下载文件,保证文件一致性
  8. 文件传输过程中显示进度条
  9. 附加功能:支持文件的断点续传

README:

1.client连接server端需要验证账号密码,密码使用MD5加密传输,三次验证不成功即退出。
2.用户信息保存在服务器本地文件中,密码MD5加密存储。磁盘配额大小也保存在其中。
3.用户连接上来后,可以执行命令如下
    目录变更:cd /cd dirname / cd . /cd ..
    文件浏览:ls
    文件删除:rm filename
    目录增删:mkdir dirname /rmdir dirname
    查看当前目录:pwd
    查看当前目录大小: du
    移动和重命名: mv filename/dirname filename/dirname
    上传文件:put filename [True] (True代表覆盖)
    下载文件:get filename [True]
    上传断点续传: newput filename [o/r] (o代表覆盖,r代表断点续传)
    下载断点续传: newget filename [o/r]
4.涉及到目录的操作,用户登录后,程序会给用户一个“锚位”----以用户名字命名的家目录,使用户无论怎么操作,都只能在这个目录底下。而在发给用户的目录信息时,隐去上层目录信息。
5.用户在创建时,磁盘配额大小默认是100M,在上传文件时,程序会计算当前目录大小加文件大小是否会超过配额上限。未超过,上传;超过,返回磁盘大小不够的信息。磁盘配额可通过用户管理程序修改。
6.文件上传和下载后都会进行MD5值比对,验证文件是否一致。
7.服务端和客户端都有显示进度条功能,启用该功能会降低文件传输速度,这是好看的代价。
8.文件断点续传,支持文件上传和下载断点续传。断点续传上传功能还会检测用户磁盘空间是否足够。(断点续传命令使用前面new+put/get命名,包含put/get所有功能,由于逻辑增多,代码复杂,特地保留原put/get,以备后用)。

程序结构:

Python3学习之路~8.6 开发一个支持多用户在线的FTP程序-代码实现

完整代码:

1.客户端 

#Author:Zheng Na

import os,sys
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))  ####获取当前文件的上一级的上一级目录
sys.path.append(BASE_DIR)

from core.client import FtpClient

if __name__ == '__main__':
    ftp = FtpClient()
    ftp.connect('localhost', 9999)

    auth_tag = False
    count = 0
    while auth_tag != True:  ####功能:3次验证不通过即退出
        count += 1
        if count <= 3:
            auth_tag = ftp.auth()
        else:
            exit()

    ftp.interactive()
    ftp.close()
main.py

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-08-04
  • 2021-11-24
  • 2021-07-07
  • 2022-12-23
  • 2021-11-11
  • 2022-01-21
猜你喜欢
  • 2021-04-12
  • 2022-02-21
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案