zoukankan      html  css  js  c++  java
  • socket 练习 sendcommand

    __author__ = 'zhaobin022'
    
    
    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    import SocketServer
    import subprocess
    
    class MyServer(SocketServer.BaseRequestHandler):
    
        def handle(self):
            # print self.request,self.client_address,self.server
            conn = self.request
            conn.sendall('from %s%s ' % self.client_address )
            Flag = True
            while Flag:
                data = conn.recv(1024)
                if data == 'sendcommand':
                    conn.sendall('ready')
                    command = conn.recv(1024)
                    p=subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
                    (stdoutput,erroutput) = p.communicate()
                    print (stdoutput,erroutput)
                    if len(erroutput) == 0:
                        total = len(stdoutput)
                        conn.sendall('total')
                        data = conn.recv(1024)
                        if data == 'ready':
                            conn.sendall(str(total))
                            data = conn.recv(1024)
                            if data == 'begin':
                                conn.sendall(stdoutput)
    
                    else:
                        conn.sendall('error')
                        print 'send error'
                        data = conn.recv(1024)
                        if data == 'senderror':
                            print 'in senderror errouput'
                            conn.sendall(erroutput)
    
                elif data == 'exit':
                    break
    
    
    
    
    if __name__ == '__main__':
        server = SocketServer.ThreadingTCPServer(('127.0.0.1',8009),MyServer)
        server.serve_forever()
    __author__ = 'zhaobin022'
    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    
    import socket
    
    
    ip_port = ('127.0.0.1',8009)
    sk = socket.socket()
    sk.connect(ip_port)
    sk.settimeout(5)
    data = sk.recv(1024)
    print 'receive:',data
    
    while True:
    
        inp = raw_input('please input:')
        sk.sendall('sendcommand')
        data = sk.recv(1024)
        if data == 'ready':
            sk.sendall(inp)
        data = sk.recv(1024)
        if data == 'total':
            sk.sendall('ready')
            data = sk.recv(1024)
            print data
            total  = int(data)
            receive = 0
            sk.sendall('begin')
            while True:
                data = sk.recv(1024)
                receive += len(data)
                if total == receive:
                    print data
                    sk.sendall('finish')
                    break
        elif data == 'error':
            print 'in error'
            sk.sendall('senderror')
            data = sk.recv(8192)
            print data
    sk.close()
  • 相关阅读:
    os.environ()详解
    查看django setting 源码
    FBV or CBV django settings 源码 模板层语法 摸板的继承 摸板的导入
    jq
    centos安装docker
    idea mapper报红解决
    Method has too many Body parameters
    Gradle安装配置
    itext生成PDF报错java.io.IOException: The document has no pages
    数字千分位
  • 原文地址:https://www.cnblogs.com/zhaobin022/p/5053113.html
Copyright © 2011-2022 走看看