服务器端:#!/usr/bin/env python# -*- coding: utf-8 -*-# @Time : 2017/8/22 16:14# @Author : Mr_zhang# @Site : # @File : server.py# @Software: PyCharm# from socket import *# import subprocess# import struct# phone = socket(AF_INET,SOCK_STREAM)# phone.setsockopt(SOL_SOCKET,SO_REUSEADDR,1)# phone.bind(('127.0.0.1',8080))# phone.listen(7)## print('startting...')# while True:# conn,client_addr = phone.accept() #等待客户端发送数据# print('------->',conn,client_addr)# while True:# try:# cmd = conn.recv(1024)# if not cmd:break# res = subprocess.Popen(cmd.decode('utf-8'),shell=True, #将普通字符串转化为系统命令# stdout=subprocess.PIPE,# stderr=subprocess.PIPE)# stdout = res.stdout.read() #输入正确读取的内容# stderr = res.stderr.read() #输入错误读取的内容## header = struct.pack('i',len(stdout)+len(stderr)) #根据长度制作报头# conn.send(header) #发送报头去探路# conn.send(stdout)# conn.send(stderr)# except Exception:# break# conn.close()# phone.close()
客户端代码:#!/usr/bin/env python# -*- coding: utf-8 -*-# @Time : 2017/8/22 16:14# @Author : Mr_zhang# @Site : # @File : client.py# @Software: PyCharm# from socket import *# import struct# phone = socket(AF_INET,SOCK_STREAM)# phone.connect(('127.0.0.1',8080))## while True:# cmd = input('>>:').strip() #输入的命令# if not cmd:continue# phone.send(cmd.encode('utf-8')) #encode之后发送出去## header_struct = phone.recv(4) #接收的报头信息# unpack_res = struct.unpack('i',header_struct) #将字节流转化为Python数据类型# total_size = unpack_res[0] #拆包之后是元组,取第一项## recv_size = 0 #接收道德数据,刚开始为0# total_data = b'' #初始数据# while recv_size < total_size: #接收到的数据