ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2020-09-14 22:01:49  阅读:214  来源: 互联网

标签:FTP 在线 多用户 dst 用户 server file dir size


一、项目需求:开发一个支持多用户在线的FTP程序

1)、基础需求:75%
1. 用户加密认证
2. 允许多用户登录
3. 每个用户都有自己的家目录,且只能访问自己的家目录
4. 对用户进行磁盘分配,每一个用户的可用空间可以自己设置
5. 允许用户在ftp server上随意切换目录
6. 允许用户查看自己家目录下的文件
7. 允许用户上传和下载,保证文件的一致性
8. 文件上传、下载过程中显示进度条

2)、升级需求:10%
1. 文件支持断点续传


二、功能实现
1. 用户加密认证
server端,用户注册密码后,明文发给服务端,服务端md5对密码加密后保存
          用户每次登陆的密码,服务端都md5加密后与数据库的值进行匹配。

2. 允许多用户登录
client端,断开连接后,客户端程序不退出。等待其他用户接入。
server端,持续运行,不主动断开。

3. 每个用户都有自己的家目录,且只能访问自己的家目录
4. 对用户进行磁盘分配,每一个用户的可用空间可以自己设置
client端,连接服务端后,注册用户。收集用户名,密码,磁盘空间
server端,收到用户名,密码,磁盘空间后,给用户创建家目录,并记录家目录空间大小设置。
server端,保存用户名,密码,磁盘空间,家目录路径到account.py。
server端,对于所有涉及路径的指令,执行之前,检查路径是否在家目录之内,超出家目录的不执行
server端,对于所有涉及文件存储的指令,执行之前,检查家目录剩余空间,空间不够不执行

5. 允许用户在ftp server上随意切换目录
_cd 命令:_cd "dst_dir"
    client端,get_cmd 方法搜集用户指令,根据cmd找到cd,cd方法得到head_dic,交给handler_send 发送数据。handler_recv接收server的执行回执,并打印结果
    server端,handler_recv 方法接收数据,拿到head_dic和cmd,order_handler根据cmd找到cd,cd 方法的到res_head_dic,交给handler_send发送数据
    server.mt方法:server类下存储类属性,dir_info字典里头存储当前路径,和家目录路径。收到用户的dst_dir之后,改变dir_info中的current_dir的值。

6. 允许用户查看自己家目录下的文件
server端,server类下存储类属性,dir_info字典里头存储current_dir和home。用户登录之后,会绑定用户家目录路径给dir_info['home']
          用户输入dir home 就会显示家目录下的文件。输入dir 就会显示current_dir下的文件。
7. 允许用户上传和下载,保证文件的一致性
client端,通过get_md5_file方法对文件进行校验,得到hash值
server端,通过get_md5_file方法对文件进行校验,得到hash值,与client端的值进行比较,返回结果。不相等需要重发。
send_file方法:client端,获取src_file,和dst_file。src_file必须输入并且文件存在。dst_file缺省是,默认保存到server家目录下的download文件夹下
                         发送dic,包括,cmd,src,dst,filename,size,file_hash。函数发现有size,进一步发送文件。
                         收取server端发来的执行结果。
               server端,收到dic,发现有size,就进一步接收文件,先校验磁盘空间,在校验dst路径(合法,存在),最后校验hash
                         处理完毕后,返回执行结果给client端。
get_file方法:client端,获取src_file,和dst_file。src_file必须输入。dst_file缺省时,默认保存到client的data下
                        发送dic包括,cmd,src,dst,filename,
                        收取server端发送来的dic,打印res。
                        发现有size,进一步接收文件,先校验dst是否存在,接收完毕后校验hash值是否一致。
              server端,收到dic,根据cmd交给,get_file去处理,先验证src路径(合法,存在),然后得到file_hash和size。
                        发送dic, 包括res,src,dst,filename,size,file_hash。函数发现有size,进一步发送文件。

8. 文件上传、下载过程中显示进度条
view_bar方法:client端发送文件时,根据send_size,和file_size来显示进度。client端接收文件时,根据recv_size 和 file_size来显示进度
功能实现

 

标签:FTP,在线,多用户,dst,用户,server,file,dir,size
来源: https://www.cnblogs.com/Teyisang/p/13669658.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有