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

服务器端

在服务器端,我们分为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文件上传下载(附源码))