python作业:高级FTP程序

要求:

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

程序流程图:

程序Readme:

MiniFTP主要是由三部分组成:服务器端、客户端、管理端。本文主要就是介绍以上三部分内容。

系统初始配置

管理员账号

用户名:admin 密码:password

用户账号:

用户名:zhangsan 密码:123

服务器地址:

IP:127.0.0.1  Port:8808

服务器端

服务器端主要是处于长期运行监控状态。在调用启动之后,即无需再次操作。

涉及文件目录:

Bin文件夹:主要是放置的服务器启动文件,运行该文件夹下的start文件即可启动服务器

Core文件夹:主要存放服务器程序的核心部分,涉及文件的作用如下:

heart.py   主要是服务器与终端的连接方式设定,内部设有相应功能模块

Record.py    此文件是设定的服务器log日志显示和存储的形式

Data文件夹:主要是存放数据,涉及的文件夹和文件作用如下:

Conf文件夹:存放configure.py文件,此文件作用是默认参数配置,默认内容如下图:

此处存放有当前服务器监控的地址和端口,可更改此处来实现实际需要。

另一个较为重要的是管理员的账号和密码,此程序暂不支持更改管理员账号和密码,但管理员账号和密码是由管理员程序使用的,普通用户程序使用无效。

Docs文件夹:此文件夹主要存放的是客户上传到服务器的文件,存放的原则是按照用户名来创建相应的文件夹。

Log文件夹:此文件夹下存放的是系统日志,系统运行之后会按照日期生成对应的日志文件,文件名形式为:年-月-日.txt

Users文件夹:此文件夹下存在两个文件,一个是Quota.txt,存放的是用户当前允许使用的配额。一个是UserAuth.txt,存放的是注册用户的信息。

客户端:

组成:

客户端部分涉及到的是MiniClient,此文件夹下主要是有Bin和Core两个文件夹组成。

Bin文件夹下放置程序开始的文件Start.py;Core文件夹下放置程序的核心文件CCore.py

功能:

客户端主界面如下:

普通用户主要涉及以下功能:

输入错误的命令会得到相应的命令提示,输入help也会得到相应的命令提示,但仅为简单命令提示,如图:

具体命令格式请参考如下说明:

1、 put,上传文件

语法: put 文件名

PS. 此处的进度条仅支持在cmd环境下显示。

文件上传支持断点续传,即客户端在上传期间,出现错误导致上传未完成,再次登录并上传未完成文件时,系统会继续传输。前提是文件MD5值不改变。

  1. get 下载文件

语法: 1、 get 原文件名  目标文件地址和目标文件名

2、get 原用户名

此处的进度条仅支持在cmd环境下显示。

不指定下载目录,则系统自动选择当前运行文件夹

      

提供了目的文件地址的,会自动下载到指定目录

      

      2.创建目录:

           

          语法: mkdir 文件夹名

      3.删除目录

           

          语法:rm 文件夹名/文件名

    4.遍历当前目录的相关信息

           

        语法:ls

    5.切换目录

           

         语法:cd 文件夹名

    若需返回上层目录,则可以使用 cd ..来进行切换

   6.显示当前所在目录的信息

         

        语法:pwd

若需要退出,可直接输入“bye”退出程序

管理端

组成:

管理端部分涉及到的是MiniAdmin,此文件夹下主要是有Bin和Core两个文件夹组成。

Bin文件夹下放置程序开始的文件start.py;Core文件夹下放置程序的核心文件ACore.py

功能:

管理员需要使用专用端与服务器进行通信,管理员界面显示的主要功能如下:

1、 注册用户

可注册允许登录ZFTP的普通用户账号

2、 删除用户

可删除当前已存在的普通用户账号

3、 查看用户

可查看当前已存在的普通用户账号。

4、 修改配额

可修改注册用户的空间配额值

5、 退出

退出系统

目前不支持管理员更改自身的用户名和密码。

已修复BUG

1、 将客户端端口号规范至合理范围(0-65535)。

2、 断点续传方面,解决传输终端后再次传输引起的非正常MD5值不一致问题。

3、 断点续传方面,解决客户端在使用非法文件替换合法文件引起MD5值不一致后,再次用合法文件传输仍旧出现MD5不一致的情况。

4、 解决传输超过空间限额的文件时引起的系统崩溃。

附:断点续传简要说明

1、 首先使用客户端连接至服务器

2、 上传文件并终端客户端

3、 重新登录服务器:

4、 重新进行上传

5、 若上传文件名一样但是内容不一样的文件,则会报错:

  服务器报以下提示:
  

  客户端报以下提示:

  

代码链接:

链接:http://pan.baidu.com/s/1pKEXw5X 密码:xikg

以上仅为参考,希望不要照抄。

时间: 2024-10-11 02:05:44

python作业:高级FTP程序的相关文章

python作业简单FTP(第七周)

作业需求: 1. 用户登陆 2. 上传/下载文件 3. 不同用户家目录不同 4. 查看当前目录下文件 5. 充分使用面向对象知识 思维图: 待补充()  思维分析: 1.用户登陆保存到文件对比用户名密码 2.上传用json序列化文件名,文件路径,文件大小传给服务器端.根据得到的字段内容操作上传动作 3.下载代码和上传基本可以互换,因为文件名都一样所以传一个文件大小即可 4.查看当前目录下文件,调用cd命令,既然能分解get 和put动作就可以看cd动作 5.添加了LINUX和Windows不同系

Python开发程序:支持多用户在线的FTP程序

作业:开发一个支持多用户在线的FTP程序 要求: 用户加密认证 允许同时多用户登录 每个用户有自己的家目录 ,且只能访问自己的家目录 对用户进行磁盘配额,每个用户的可用空间不同 允许用户在ftp server上随意切换目录 允许用户查看当前目录下文件 允许上传和下载文件,保证文件一致性 文件传输过程中显示进度条 附加功能:支持文件的断点续传(仅下载) 程序 1.最最重要的readme: ### 作者介绍: * author:lzl ### 博客地址: * http://www.cnblogs.c

(转)python高级FTP

原文地址:http://www.itnose.net/detail/6754889.html高级FTP服务器1. 用户加密认证2. 多用户同时登陆3. 每个用户有自己的家目录且只能访问自己的家目录4. 对用户进行磁盘配额.不同用户配额可不同5. 用户可以登陆server后,可切换目录6. 查看当前目录下文件7. 上传下载文件,保证文件一致性8. 传输过程中现实进度条9.支持断点续传10.用户操作日志 服务端 启动参数 start客户端 启动参数 -s localhost -P 9500 程序结构

python第四十八天--高级FTP

高级FTP服务器1. 用户加密认证2. 多用户同时登陆3. 每个用户有自己的家目录且只能访问自己的家目录4. 对用户进行磁盘配额.不同用户配额可不同5. 用户可以登陆server后,可切换目录6. 查看当前目录下文件7. 上传下载文件,保证文件一致性8. 传输过程中现实进度条9.支持断点续传10.用户操作日志 服务端 启动参数 start客户端 启动参数 -s localhost -P 9500 程序结构:seniorFTP/#综合目录|- - -ftp_client/#客户端程序目录| |-

【python练习】基于socket的FTP程序 v1.1.0(支持并发)

增加功能 1.在FTP(1.0.0)的基础上,支持了多并发的功能 2.允许配置最大并发数,比如允许只有10个并发用户 程序功能: 本程序模拟实现了一个FTP程序: 1.程序分为客户端和服务端 2.用户可以登录和注册账号,登录密码有MD5加密 3.每个用户有自己的家目录 ,且只能访问自己的家目录 4.用户可以随意切换目录(仅限自己的家目录) 5.允许用户查看当前目录下文件 6.允许上传和下载文件,保证文件一致性(md5),(不允许下载/上传文件夹,会出现不可恢复bug,用户配置文件需要重置.时间原

无所不能的python是如何解决程序员的终身大事的?

Python(发音:英[?pa?θ?n],美[?pa?θɑ:n]),是一种面向对象.直译式电脑编程语言,也是一种功能强大的通用型语言,已经具有近二十年的发展历史,成熟且稳定.它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务.它的语法非常简捷和清晰,与其它大多数程序设计语言不一样,它使用缩进来定义语句. Python支持命令式程序设计.面向对象程序设计.函数式编程.面向切面编程.泛型编程多种编程范式.与Scheme.Ruby.Perl.Tcl等动态语言一样,Python具备垃圾回收

进击的Python【第五章】:Python的高级应用(二)常用模块

Python的高级应用(二)常用模块学习 本章学习要点: Python模块的定义 time &datetime模块 random模块 os模块 sys模块 shutil模块 ConfigParser模块 shelve模块 xml处理 re正则表达式 一.Python模块的定义 有过C语言编程经验的朋友都知道在C语言中如果要引用sqrt这个函数,必须用语句"#include<math.h>"引入math.h这个头文件,否则是无法正常进行调用的.那么在Python中,如

进击的Python【第四章】:Python的高级应用(一)

Python的高级应用(一) 本章内容: 内置函数 生成器 迭代器 装饰器 JSON和PICKLE的简单用法 软件目录结构规范 一.内置函数 1.数学运算类 abs(x) 求绝对值1.参数可以是整型,也可以是复数2.若参数是复数,则返回复数的模 complex([real[, imag]]) 创建一个复数 divmod(a, b) 分别取商和余数注意:整型.浮点型都可以 float([x]) 将一个字符串或数转换为浮点数.如果无参数将返回0.0 int([x[, base]])  将一个字符转换

进击的Python【第七章】:Python的高级应用(四)面向对象编程进阶

Python的高级应用(三)面向对象编程进阶 本章学习要点: 面向对象高级语法部分 静态方法.类方法.属性方法 类的特殊方法 反射 异常处理 Socket开发基础 一.面向对象高级语法部分 静态方法 要在类中使用静态方法,需在类成员函数前面加上@staticmethod标记符,以表示下面的成员函数是静态函数.使用静态方法的好处是,不需要定义实例即可使用这个方法.另外,多个实例共享此静态方法. 类方法 类方法与普通的成员函数和静态函数有不同之处,在接触的语言中好像也没见过这种语义,看它的定义: