Erlo

Python之路【第十五篇】开发FTP多线程程序

2019-08-15 02:02:39 发布   607 浏览  
页面报错/反馈
收藏 点赞

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

    

 

server服务端

bin下的文件 

ftp_server.py

#_*_ coding:utf-8 _*_
#Author :simon

import os
import sys

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

sys.path.append(BASE_DIR)

from core.main import Manager

if __name__ == '__main__':
    Manager().run()

conf下的文件

accounts.ini(这个可以在执行中创建)

[william]
password = 39da56d2e7a994d38b9aaf329640fc6e
homedir = home/william
quota = 10

[zhurui]
password = 39da56d2e7a994d38b9aaf329640fc6e
homedir = home/zhurui
quota = 10

[simon]
password = 39da56d2e7a994d38b9aaf329640fc6e
homedir = home/simon
quota = 10

settings.py

#_*_ coding:utf-8 _*_
# Author:Simon
# Datetime:2019/8/14 11:00
# Software:PyCharm

import os
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
ACCOUNTS_FILE = os.path.join(BASE_DIR, 'conf', 'accounts.ini')

HOST = '127.0.0.1'
PORT = 8080

MAX_CONCURRENT_COUNT = 10

core下的文件

main.py

# _*_ coding:utf-8 _*_
#Author:Simon

from core.user_handle import UserHandle
from core.server import Ftpserver

class Manager():
    def __init__(self):
        pass
    def start_ftp(self):
        '''启动ftp_server端'''
        server = Ftpserver()
        server.run()
        server.close()

    def create_user(self):
        '''创建用户'''
        username = input('请输入要创建的用户>:').strip()
        UserHandle(username).add_user()

    def quit_func(self):
        quit('get out...')

    def run(self):
        msg = '''
登录查看全部

参与评论

评论留言

还没有评论留言,赶紧来抢楼吧~~

手机查看

返回顶部

给这篇文章打个标签吧~

棒极了 糟糕透顶 好文章 PHP JAVA JS 小程序 Python SEO MySql 确认