码迷,mamicode.com
首页 > 编程语言 > 详细

利用python Socket写一个类似FTP的脚本(只写了下载,上传和下载差不多就不多写了)

时间:2014-10-26 06:56:19      阅读:192      评论:0      收藏:0      [点我收藏+]

标签:socket   服务器   python   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的脚本(只写了下载,上传和下载差不多就不多写了)

标签:socket   服务器   python   ftp   客户端   

原文地址:http://hans925.blog.51cto.com/542170/1567973

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!