首页 > 代码库 > 利用python Socket写一个类似FTP的脚本(只写了下载,上传和下载差不多就不多写了)
利用python Socket写一个类似FTP的脚本(只写了下载,上传和下载差不多就不多写了)
Socket的介绍就不多说了,网上都能搜到,直接说脚本,要实现FTP的功能要有服务器端和客户端,
服务器端:
import SocketServer import commands import time class MySockServer(SocketServer.BaseRequestHandler): def handle(self): print "Got a new conn from", self.client_address while True: cmd = self.request.recv(1024) if not cmd:break cmd = cmd.split() if cmd[0] =="get": print "Start transfer......." with open(cmd[1],‘rb‘) as f: self.request.send(f.read()) time.sleep(0.2) self.request.send("OOK") #这算是个标示吧。客户端收到这个说明已经传完了 continue cmd_result = commands.getstatusoutput(cmd[0]) #执行客户端发地来的shell命令 self.request.send(cmd_result[1]) if __name__ == ‘__main__‘: host=‘‘ port = 52167 s = SocketServer.ThreadingTCPServer((host,port), MySockServer) s.serve_forever() 客户端: import socket import time host = ‘x.x.x.x‘ #服务器的地址 port = 52167 addr = host,port s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.connect(addr) while True: Input = raw_input(‘Please your input:‘).strip() if len(Input)==0:continue s.send(Input) Input = Input.split() if Input[0]== ‘get‘: print "get file ....." with open(Input[1],‘wb‘) as f: f.write(s.recv(1024)) time.sleep(0.2) if s.recv(1024) == "OOK": print "Down finsh ......" continue data = s.recv(1024) print data
一直在自学python但一直都是断断续续的不能坚持。学了好长时间才会写个简单的Socket,这智商让人捉急啊。
本文出自 “linux管理” 博客,请务必保留此出处http://hans925.blog.51cto.com/542170/1567973
利用python Socket写一个类似FTP的脚本(只写了下载,上传和下载差不多就不多写了)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。