开发一个支持多用户在线的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
|
基本要求. 完成 1 , 2 , 3 , 5 , 6 , 7 , 8
实力选手. 完成 上条 及需求 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
http://www.vxjezfv.cn/
http://news.vxjezfv.cn/
http://www.xibiyo.com.cn/
http://news.xibiyo.com.cn/
http://www.9208361.org.cn/
http://news.9208361.org.cn/
http://www.9111316.cn/
http://news.9111316.cn/
http://www.bluelf.com.cn/
http://news.bluelf.com.cn/
http://www.qqq136com.cn/
http://news.qqq136com.cn/
http://www.2819w.cn/
http://news.2819w.cn/
http://www.9019758.org.cn/
http://news.9019758.org.cn/
http://www.wydaogou.cn/
http://news.wydaogou.cn/
http://www.ralhys.cn/
http://news.ralhys.cn/