# FtpTool **Repository Path**: apphao/ftp-tool ## Basic Information - **Project Name**: FtpTool - **Description**: 使用Python练习Socket和面向对象编程 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-09-05 - **Last Updated**: 2021-09-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README FTP服务端和客户端通信协议: 客户端 ——> 服务端 msg_data = { "action_type": action_type, "fill": "", "key1": value1, "key2": value2, ... } 服务端 ——> 客户端 data = { "status_code": status_code, "status_msg": STATUS_CODE[status_code], "fill": "", "key1": value1, "key2": value2, ... } FTP服务器程序: 1. start.py 启动程序,接收用户参数(start/stop/restart/createuser) 一、实例化一个ManagementTool类的对象 二、执行该对象下的execute()函数 2. management.py 定义ManagementTool类:解析用户参数,执行相应功能 成员函数: 1. __init__(self, sys_argv) 接收并校验命令行参数 2. verify_argv(self) 验证指令参数合法性 3. help_msg(self) 退出并输出帮助信息 4. execute(self) 执行指令 5. start(self) 开启FTP服务器 6. stop(self) 停止FTP服务器 7. restart(self) 重启FTP服务器 8. createuser(self) 创建用户 3. main.py 定义FTPserver类:处理与客户端的交互 成员函数: 1. __init__(self, management_instance) 初始化服务端套接字并从ini文件中加载所有账户信息 2. load_accounts(self) 加载所有账号信息 3. run_forever(self) 启动socket server 4. handle(self) 处理与用户的所有指令交互 5. authenticate(self, username, password) 用户认证方法 6. send_response(self, status_code, *args, **kwargs) 打包发送消息给客户端 7. _auth(self, data) 处理用户认证请求 8. _get(self, data) 服务端下载文件 FTP客户端程序 ftpclient.py 定义FtpClient类:ftp客户端 成员函数: 1. __init__(self) 处理参数,创建套接字 2. argv_verification(self) 检查参数合法性 3. make_connection(self) 建立socket连接 4. interactive(self) 处理与FtpServer的所有交互 5. auth(self) 用户认证 6. _get(self, cmd_args) 下载文件 7. _put(self) 上传文件 8. parameter_check(self, args, min_args=None, max_args=None, exact_args=None) 登录成功后的指令参数个数合法性检查 9. send_msg(self, action_type, **kwargs) 打包消息并发送到远程 10.get_response(self) 获取服务器端返回