zoukankan      html  css  js  c++  java
  • 【python练习】基于socket的FTP程序 v1.1.0(支持多用户)

    增加功能

    1.在FTP(1.0.0)的基础上,支持了多并发的功能
    2.允许配置最大并发数,比如允许只有10个并发用户
    

    程序功能:

    本程序模拟实现了一个FTP程序:
    1.程序分为客户端和服务端
    2.用户可以登录和注册账号,登录密码有MD5加密
    3.每个用户有自己的家目录 ,且只能访问自己的家目录
    4.用户可以随意切换目录(仅限自己的家目录)
    5.允许用户查看当前目录下文件
    6.允许上传和下载文件,保证文件一致性(md5),(不允许下载/上传文件夹,会出现不可恢复bug,用户配置文件需要重置。时间原因没有加判断)
    7.文件传输过程中显示进度条
    8.支持文件上传、下载的断点续传
    

    测试:

    数据为空,需要手动创建添加
    1.需要自行注册账号
    2.本地上传的文件,应放在clientdb用户名uploads中
    3.下载的文件会自动存储在clientdb用户名downloas中
    4.不能下载/上传文件夹,会出现不可恢复bug
    

    程序结构:

    仅在core下添加了MyThreadPool.py

    FTP/
    └── ├── README 
        ├── client # 客户端程序目录
        └── server # 服务端程序目录
    
    FTP/client/
    └── ├── conf # 配置文件
        │   ├── init.py
        │   └── settings.py
        ├── core # 主要程序逻辑都
        │   ├── init.py
        │   ├── login.py        # 登陆模块
        │   ├── main.py         # 主逻辑交互程序
        │   └── register.py     # 注册模块
        ├── db #用户数据存储的地方
        │    └── disk # 存放各用户上传下载文件
        │       ├── 用户名文件1 # 用户名文件
        │       │       ├── downloads # 下载的文件存放目录
        │       │       └── uploads # 需要上传的文件目录
        │       └── 用户名文件2 # 用户名文件
        │               ├── downloads # 下载的文件存放目录
        │               └── uploads # 需要上传的文件目录
        └── FTP_client # client端程序主入口
    
    FTP/server/
    └── ├── conf # 配置文件
        │   ├── init.py
        │   └── settings.py
        ├── core # 主要程序逻辑都
        │   ├── init.py
        │   ├── logger.py       # 日志记录模块
        │   ├── login.py        # 登陆模块
        │   ├── main.py         # 主逻辑交互程序
        │   ├── MyThreadPool.py # 线程池
        │   └── register.py     # 注册模块
        ├── db #用户数据存储的地方
        │   ├── accounts.ini  # 用户配置文件,存放账号、密码(MD5)
        │   └── disk # 存放各用户上传下载文件
        │        ├── 用户名文件1 # 用户名文件
        │        │       ├── downloads # 下载的文件存放目录
        │        │       └── uploads # 需要上传的文件目录
        │        └── 用户名文件2 # 用户名文件
        │                ├── downloads # 下载的文件存放目录
        │                └── uploads # 需要上传的文件目录
        └── logs #日志目录
        │   ├── init.py
        │   └── access.log #用户访问和操作的相关日志
        └── FTP_server # server端程序主入口
    
  • 相关阅读:
    SQL 中单引号 和一些特殊字符的处理
    jquery 删除table行,该如何解决
    jQuery获取Select选中的Text和Value,根据Value值动态添加属性等
    C#中DataTable
    jquery操作select(取值,设置选中)
    JS刷新页面总和!多种JS刷新页面代码!
    VS中代码对齐等快捷键
    SQL递归查询(with cte as)
    SQL Server 公用表表达式(CTE)实现递归的方法
    linux ls和 ll 命令
  • 原文地址:https://www.cnblogs.com/q1ang/p/9610181.html
Copyright © 2011-2022 走看看