Fork me on GitHub

开发一个支持多用户在线的FTP程序

一,项目题目:开发一个支持多用户在线的FTP程序

二,项目要求:

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

三,注意事项: 

1
2
3
基本要求. 完成1235678
实力选手. 完成 上条 及需求4 ,    
大神操作. 完成 9 且项目目录结构良好、代码逻辑清晰,

  

四,项目分析:

1,用户加密认证

1
2
3
4
  这个肯定需要用到configparser 和hashlib模块,用md5进行加密,服务端与用户端
进行交互前,肯定需要进行认证,在服务端进行认证,客户端需要发送用户名及密码,但
是为了安全起见,服务端数据库中的密码应该是加密后的密文,客户端登陆认证时也应该
发送密文到服务端,服务端接受到密文与数据库中对应的密文进行比较。

  

2,查看自己的当前目录下的文件

1
2
  这个只需要写一个dir就ok
简单的说,使用configparse模块就可以完成

  

3,文件传输中显示进度条

1
2
3
下载的进度条比较好实现,我们可以从服务端受到将要下载的文件的大小,
 
上传的进度条,我们可以利用文件操作的tell()方法,获取当前指针位置(字节)

  

4,小编的主要思路

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
- 1 对于此项目,最初的想法是写出上传,和下载文件的程序,包括客户端和服务端。
 
-  2 在此基础上扩展程序,包括提出开始程序到bin里面,配置文件在config里面
 
-  3 然后把上传文件和下载文件的程序进行断点续传的程序重构
 
-   4 在此基础上,对文件进行加密
 
-   5 增加功能,包括设置进度条,增加查看功能,增加目录功能,删除文件功能,切换目录功能等
 
-   6 然后再设置磁盘分配功能,完善内容
 
-   7 然后添加用户登陆,包括对用户的密码加密等功能
 
-   8 写完后检查程序

  

 五,项目流程图

 

 

六,README文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
## 作者:zhanzhengrecheng
## 版本:示例版本 v0.1
## 程序介绍:
- 实现了支持多用户在线的FTP程序 常用功能
- 功能全部用python的基础知识实现,用到了socket\hashlib\configparse\os\sys\pickle\函数\模块\类知识
 
## 概述
本次作业文件夹一共包含了以下5个文件:
- 流程图: FTP_homework思路流程图
- 程序结构图:整个FTP_homework的程序文件结构
- 程序结构文件:整个FTP_homework的程序文件结构
- 程序文件: FTP_homework
- 程序说明文件:README.md
 
## 程序要求
- 1.用户加密认证
- 2.允许同时多用户登录
- 3.每个用户有自己的家目录 ,且只能访问自己的家目录
- 4.对用户进行磁盘配额,每个用户的可用空间不同
- 5.允许用户在ftp server上随意切换目录
- 6.允许用户查看当前目录下文件
- 7.允许上传和下载文件,保证文件一致性(md5)
- 8.文件传输过程中显示进度条
- 9.附加功能:支持文件的断点续传
## 本项目思路
- 1 对于此项目,最初的想法是写出上传,和下载文件的程序,包括客户端和服务端。
-  2 在此基础上扩展程序,包括提出开始程序到bin里面,配置文件在config里面
-  3 然后把上传文件和下载文件的程序进行断点续传的程序重构
-   4 在此基础上,对文件进行加密
-   5 增加功能,包括设置进度条,增加查看功能,增加目录功能,删除文件功能,切换目录功能等
-   6 然后再设置磁盘分配功能,完善内容
-   7 然后添加用户登陆,包括对用户的密码加密等功能
-   8 写完后检查程序
 
 
##### 备注(程序结构)
> 目前还不会把程序树放在README.md里面,所以做出程序结构的txt版本和图片版本,放在文件外面方便查看
 
## 对几个实例文件的说明
### 几个实例文件全是为了上传和下载使用,自己随便找的素材
 
## 不足及其改进的方面
### 每次程序从用户登陆到使用只能完成一次功能,不能重复使用
 
## 程序结构
 
│  FTP_homework
│  __init__.py
│ 
├─client                # 客户端程序入口
│  │  __init__.py
│  ├─bin                # 可执行程序入口目录
│  │      run.py
│  │      __init__.py
│  ├─config             # 配置文件目录
│  │  │  settings.py    # 配置文件
│  │  │  __init__.py      
│  ├─core               # 主要逻辑程序目录
│  │  │  ftp_client.py  # client端主程序模块
│  │  │  __init__.py      
│  ├─download           # 下载内容模块
│  │      a.jpg
│  │      a.txt
│  │      c.mp4 
│  └─upload             # 上传内容模块
│          a.txt
│          aa.avi
└─server                 # 服务端程序入口
    ├─bin
    │      run.py        # 可执行程序入口目录
    │      __init__.py
    ├─config             # 配置文件目录
    │  │  accounts.ini   # 账号密码配置文件
    │  │  settings.py    # 配置文件
    │  │  __init__.py       
    ├─core               # 主要逻辑程序目录
    │  │  ftp_server.py  # server端主程序模块
    │  │  main.py        # 主程序模块
    │  │  user_handle.py # 用户注册登录模块 
    └─home               # 家目录
        │  __init__.py
        ├─curry          # curry用户的家目录
        │  │  aa.avi
        │  └─test
        └─james           # james用户的家目录
            │  a.jpg
            │  aa.avi
            │  c.mp4
            └─test1

  

七,程序结构图

 八,程序代码

1,server

1.1 bin

run.py

  

1.2config

settings.py

  

1.3core

ftp_server.py

  

main.py

  

user_handle.py

  

2,client

2.1bin

run.py

  

2.2config

settings.py

  

2.3core

ftp_client.py

  

posted @   战争热诚  阅读(2887)  评论(0编辑  收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示