import subprocess
import struct
import json
servers.bind(('127.0.0.1', 7777))
servers.listen(10)
print('start settings')
"""连接循环"""
conn, adder = servers.accept()
print('客服端的信息:', adder)
"通信循环"
try:
cmd = conn.recv(1024) # 1收命令
obj = subprocess.Popen(cmd.decode('utf-8'), shell=True,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
stdout = obj.stdout.read()
stderr = obj.stderr.read()
header_dict = {'filename': 'a.txt',
'md5': 'xxxx',
'total_size': len(stdout)+len(stderr)}
header_json = json.dumps(header_dict)
header_bytes = header_json.encode('utf-8')
header_size = struct.pack('i', len(header_bytes))
conn.send(header_size)
conn.send(header_bytes)
conn.send(stdout)
conn.send(stderr)
break
conn.close()
import struct
import json
import socket
client.connect(('127.0.0.1', 7777))
"""通信循环"""
cmd = input('输入要执行的命令:').strip() # 收命令
if not cmd:continue
client.send(cmd.encode('utf-8')) # 发送命令
obj = client.recv(4) # 收固定长度的报头
header_size = struct.unpack('i', obj)[0]
header_bytes = client.recv(header_size)
header_json = header_bytes.decode('utf-8')
header_dict = json.loads(header_json)
total_size = header_dict['total_size']
recv_size = 0
recv_data = b''
while recv_size < total_size:
result = client.recv(1024)
recv_size += len(result)
recv_data += result