FTP
要求: 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
流程图:
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('