美文网首页
Python 实现FTP文件上传下载(附源码)

Python 实现FTP文件上传下载(附源码)

作者: 戏之地 | 来源:发表于2017-01-14 23:29 被阅读126次

    服务器端

    在服务器端,我们分为4个部分:bin(可执行),conf(配置),core(核心代码),home(存储每个用户的内部数据)

    bin

    这个包中放置了服务器端的运行文件ftp_server.py
    其中配置base_dir,保证所有模块中的导入包都可以运行
    在其中,调用请求处理类

    core

    core里面有两个模块:

    • server,处理客户端发来的各种请求
    这个模块主要用来处理客户端发来的各种命令,
    首先规定客户端和服务器端交互的单位为一个字典
    字典的格式:包含命令及命令所需要的各种参数
    # 向客户端返回数据,收到客户端发来的信息之后,返回一个执行码
        def send_response(self, status_code, data=None):
            '''向客户端返回数据'''
            response = {'status_code': status_code, 'status_msg': STATUS_CODE[status_code]}
            if data:
                response.update(data)
            self.request.send(json.dumps(response).encode())
    
    • main , 启用服务器的各种参数
    #命令行的各种参数处理我们使用opt_parse处理
    self.op=optparse.OptionParser()
    # op.add_option("-s","--host",dest="host",help="server IP address")
    # op.add_option("-P","--port",dest="port",help="server port")
    options,args=self.op.parse_args()
    # print(options,args)
    # print(options.host,options.port)
    

    __init__函数里面,同时调用了验证参数和启动某一命令的函数

        def verify_argv(self,options,args):
            # 利用反射的方法,可以精简代码,调用名字为你所传参数的函数
            if hasattr(self,args[0]):
                func=getattr(self,args[0])
                func()
    
            else:
                #self.op.print_help()
                print("不存在这个函数")
        def start(self):
            print('server is working ....')
            ser=socketserver.ThreadingTCPServer((settings.IP,settings.PORT),server.ServerHandler)
            ser.serve_forever()
    
    

    服务器与客户端的命令交互

    相关文章

      网友评论

          本文标题:Python 实现FTP文件上传下载(附源码)

          本文链接:https://www.haomeiwen.com/subject/yrjrbttx.html