Rianley / ftp-file

这是一个练习socket的项目,基于socket-server的文件传输系统

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

ftp-file

这是一个练习socket的项目,基于socket-server的文件传输系统 FTP-Socket """ __author:rianley cheng """

功能说明: 本程序是一个模拟 FTP 的应用,包括客户端和服务端,实现如下功能:

1 可以实现多客户端连接, 服务端采用 SocketServer 模块实现,支持多客户端连接

2 实现客户端登录验证, 对客户端登录时采用 sha224 加密算法进行加密,

3 对用户访问目录进行限制,只允许在自己家目录下进行访问,不能进入其他用户目录

4 对用户上传目录磁盘进行限制,支持不同用户定义不同大小,默认500M (此处有服务端进行分配)

5 用户注册放到了服务端进行(客户端无法注册用户)

6 支持上传文件夹 and 文件

7 文件校验比对(主要是 将文件的名称,大小 进行混淆,来确定文件收发的完整性)

8 支持文件上传、下载的进度显示

9 支持以下命令功能 put: 上传文件 get: 下载文件 show: 显示文件夹内容 cd: 目录切换

10 支持断点续传,分片上传。(同时间只有一个·生成器·在内存(客户端 服务端都是如此)) ,不断的收发数据 (优化内存)

11 全局日志记录 目录介绍:

client: |--start.py (主引导程序文件) | |--bin (主接口文件目录) | |-- ftpclient.py (主接口文件,登录接口、调用命令模块主文件) | |--conf (配置文件目录) | |-- codes.py (状态码文件) | |-- settings.py (系统配置主文件) | |-- tempate.py (模板文件) | |--download (文件下载存放目录) | |--logs (日志目录) | |-- ftpclient.log | |--module (模块目录) | |-- common.py (公共模块) | |-- client.py (客户端类文件,定义客户端所有命令的方法)


servr: |--start.py (主引导程序文件) | |--bin (主接口文件目录) | |-- ftpserver.py (主接口文件,登录接口、调用命令模块主文件) | |--conf (配置文件目录) | |-- settings.py (系统配置主文件) | |-- tempate.py (模板文件) | |-- database (数据保存文件) | |-- breakpoint (断点续传记录文件保存目录,每个用户一个文件) | |-- user.ini (用户信息保存文件) | |-- dbhelper | |-- dbapi.py (数据操作接口) | |--upload (用户上传文件存放目录,下面存放所有用户的家目录,一个用户一个文件夹) | |--logs (日志目录) | |-- ftpclient.log | |--module (模块目录) | |-- common.py (公共模块) | |-- server.py (服务端模块文件,定义服务端所有命令的方法) | |-- users.py (用户类文件,每个客户端连接后会生成一个用户对象,这个类文件用来实例化用户对象)

应用关键模块及知识点: 1 模块: socket, socketserver, hashlib(md5,sha224),mutilprocess

2 知识点: 多进程、反射、类、套接字通信、模块的综合使用

About

这是一个练习socket的项目,基于socket-server的文件传输系统


Languages

Language:Python 100.0%