开发一个支持多用户同时在线的FTP程序  FTP client客户端

要求:
1.用户加密认证
2.允许同时多用户登录
3.每个用户有自己的家目录,且只能访问自己的家目录
4.对用户进行磁盘配额,每个用户的可用空间不同
5.允许用户在ftp server上随意切换目录
6.允许用户查看当前目录下的文件
7.允许上传和下载文件,并保证文件的一致性md5
8.文件传输过程中显示进度条
9.支持文件的断点续传
使用:
1.启动ftp_server.py
2.创建用户,输入:用户名(默认密码是123)
3.启动FTP服务器
4.启动客户端ftp_client.py
5.输入用户名和密码:alex 123 | kris 123
6.与服务器server交互:
6.1. get 1.jpg 下载图片
6.2. put test.txt 上传文件
6.3. ls 查询当前目录下的文件列表
6.4. mkdir test 创建文件夹
6.5. cd test 切换目录
6.6. remove test 删除文件或空文件夹

Git:https://github.com/kris-2018/task

流程图:

开发一个支持多用户同时在线的FTP程序
 FTP
client客户端

  开发一个支持多用户同时在线的FTP程序
 FTP
client客户端  开发一个支持多用户同时在线的FTP程序
 FTP
client客户端

client客户端

download文件是储存下载的文件;upload是上传文件的储存库(download里边可以不放东西,等待下载即可;upload里边放你准备上传给服务端的文件)

ftp_client.py

# -*- coding:utf-8 -*-
#Author:Kris

import os,sys,socket,struct,pickle,hashlib

class FTPClient():
    HOST = '127.0.0.1'  # 服务端的IP
    PORT = 8080  # 服务端的端口
    MAX_RECV_SIZE = 8192
    DOWNLOAD_PATH =  os.path.join(os.path.dirname(os.path.abspath(__file__)),'download')
    UPLOAD_PATH = os.path.join(os.path.dirname(os.path.abspath(__file__)),'upload')

    def __init__(self):
        self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        self.connect()

    def connect(self):
        """连接服务端server"""
        try:
            self.socket.connect((self.HOST,self.PORT))
        except Exception:
            exit('