博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python-22_FTP之验证功能
阅读量:6265 次
发布时间:2019-06-22

本文共 3681 字,大约阅读时间需要 12 分钟。

目录结构

FTP_server/bin/ftp_server.py

import os,sysPATH=os.path.dirname(os.path.dirname(os.path.abspath(__file__)))sys.path.append(PATH)# print(PATH)# print(sys.path)# print(os.path.dirname(os.path.abspath(__file__)))# print(os.path.abspath(__file__))from core import mainif __name__ == '__main__':    main.ArgvHandler()复制代码

FTP_server/conf/settings.py

IP='127.0.0.1'PORT=8080复制代码

FTP_server/core/main.py

#解析命令行的命令import optparseimport socketserverfrom conf import settings#这个文件不是启动文件from core import serverclass ArgvHandler():    def __init__(self):        self.op=optparse.OptionParser()        # self.op.add_option('-s','--server',dest='server')        # self.op.add_option('-P','--port',dest='port')        options,args=self.op.parse_args()        self.verify_args(options,args)        # print(options,args)        # print(options.server)#ip地址        # print(options.port)#端口    def verify_args(self,options,args):        cmd=args[0]        if hasattr(self,cmd):            func =getattr(self,cmd)            func()    def start(self):        print('the server is working....')        s = socketserver.ThreadingTCPServer((settings.IP,settings.PORT),server.ServerHandle)        s.serve_forever()    def help(self):        pass            ```    ***FTP_server/core/server.py***    ```    import socketserverimport jsonclass ServerHandle(socketserver.BaseRequestHandler):    def handle(self):        while 1 :            data = self.request.recv(1024).strip()            data = json.loads(data.decode('utf8'))            if data.get('action'):                if hasattr(self,data.get('action')):                    func = getattr(self,data.get('action'))                    func(**data)                else:                    print('error')            else:                print('error')    def auth(self,**data):        print('data:',data)    def put(self,**data):        pass复制代码

FTP_client/ftp_client.py

import optparseimport socketimport jsonimport configparserclass ClientHandler():    def __init__(self):        self.op = optparse.OptionParser()        self.op.add_option('-s','--server',dest='server')        self.op.add_option('-P','--p',dest='port')        self.op.add_option('-u', '--username', dest='username')        self.op.add_option('-p', '--password', dest='password')        self.options,self.args = self.op.parse_args()        #对端口和ip地址进行安全校验        self.verify_args(self.options,self.args)        #连接服务端        self.make_connection()    def verify_args(self,options,args):        server = options.server        port=options.port        # username=options.username        # password=options.password        if int(port)>0 and int(port)<65535:            return True        else:            exit('the port is in 0-65535')    def make_connection(self):        self.sock=socket.socket()        self.sock.connect((self.options.server,int(self.options.port)))    #和服务端进行交互    def interactive(self):        self.authenticate()    def authenticate(self):        if self.options.username is None or self.options.password is None:            username = input('username:')            password = input('password:')            return self.getauth_result(username,password)        return self.getauth_result(self.options.username,self.options.password)    def respones(self):        data = self.sock.recv(1024).decode('utf8')        data = json.loads(data)        return data    def getauth_result(self,user,pwd):        data = {            'action':'auth',            'username':user,            'password':pwd        }        self.sock.send(json.dumps(data).encode('utf8'))        response=self.respones()        print(response)ch = ClientHandler()#交互ch.interactive()复制代码

运行结果

转载地址:http://swcpa.baihongyu.com/

你可能感兴趣的文章
淘宝UWP--自定义图片缓存
查看>>
Javascript构造函数
查看>>
php--某个字符在字符串中的位置比较
查看>>
一个类有两个方法,其中一个是同步的,另一个是非同步的; 现在又两个线程A和B,请问:当线程A访问此类的同步方法时,线程B是否能访问此类的非同步方法?...
查看>>
[LeetCode] Maximum Product of Word Lengths 单词长度的最大积
查看>>
socket通信中select函数的使用和解释
查看>>
JAVA Map集合类简介
查看>>
c++实现gray code(格雷码)
查看>>
Spark1.4.1 编译与安装
查看>>
epub显示特殊字体
查看>>
JDK各个版本的新特性jdk1.5-jdk8
查看>>
ZOJ 3529 A Game Between Alice and Bob(博弈论-sg函数)
查看>>
zoj 2822 Sum of Different Primes (01背包)
查看>>
Directx11学习笔记【三】 第一个D3D11程序
查看>>
UVa 11292 - Dragon of Loowater
查看>>
【Android】3.15 短串分享功能
查看>>
火星人乘坐核动力飞船回故乡
查看>>
怎么限制Google自己主动调整字体大小
查看>>
iOS Runtime原理及使用
查看>>
asp.net将内容导出到Excel,Table表格数据(html)导出EXCEL
查看>>