python 实现简单的FTP

一、开发环境

server端:centos 7  python-3.6.2

客户端:Windows 7 python-3.6.2 pycharm-2018

程序目的:1、学习使用socketserver实现并发处理多个客户端。

             2、了解使用struct解决TCP粘包。

二、程序设计

(本人菜鸟一枚,对于开发规范,接口设计完全不懂,完全是随心所欲,自娱自乐。写博客主要是记录自己学习的点点滴滴,如有不足之处还请见谅。)

1、server端

1.1 目录结构如下:

 1.2 目录简介:

FTP_SERVER:程序主目录

app:程序主逻辑目录,目录下有四个模块:

          FTPserver.py:FTP  Server端启动入口。

          login.py:认证注册模块,用于处理用户注册,登录认证。

          dataAnalysis.py:命令解析模块,负责解析,执行客户端命令。

          FileOpertion.py:负责文件读,写。数据发送,数据接收。

db:存放user_pwd.db文件,用于存放用户信息(用户名,密码,FTP目录总空间,已使用空间等)

lib:存放公共数据。

1.3 模块中类的继承关系

1.4 执行流程

1.4.1 程序启动文件FTPserver.py,程序启动后进入监听状态。核心代码如下:

class MyFtpServer(socketserver.BaseRequestHandler):
    
    def handle(self):  # 重写handle方法,处理socket请求
        print(f"连接来自{self.client_address}的客户端")
        commom_obj = Commom()
        data_analy = DataAnalysis()
        login_obj = Login()
        while 1:
            # 执行用户选项:1、登陆系统 2、注册账号。并返回一个结果
            status_id = login_obj.run_client_choice(self.request, commom_obj)
            if status_id == "01":  # 登陆成功
                if not self.run_ftp_server(data_analy,commom_obj):  # 执行ftpserver主功能
                    break
            elif int(status_id) == -1: # client断开连接了
                break
        print(f"客户端{self.client_address}断开了连接")

    def run_ftp_server(self,data_analy,commom_obj):
        """"
        登陆成功后,接收客户端发来的命令,并进行处理
        :param data_analy:负责解析,执行客户端命令的对
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值