server端
import socket sk = socket.socket() sk.bind((‘127.0.0.1‘,9000)) sk.listen() conn,addr = sk.accept() print(conn,addr) while True: cmd = input(‘请输入你的命令: ‘) if cmd == ‘q‘: break conn.send(cmd.encode(‘gbk‘)) data_length = conn.recv(1024).decode(‘gbk‘) conn.send(b‘ok‘) # 接受到消息大小后马上send,这样可以隔开两次recv,并且第二次接受指定长度的消息 data = conn.recv(int(data_length)).decode(‘gbk‘) print(data) conn.close() sk.close()
client
import socket import subprocess sk = socket.socket() sk.connect((‘127.0.0.1‘,9000)) while True: cmd = sk.recv(1024).decode(‘gbk‘) ret = subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE) std_out = ret.stdout.read() std_err = ret.stderr.read() data_length = str(len(std_out)+len(std_err)).encode(‘gbk‘) sk.send(data_length) sk.recv(1024) # send消息大小后马上转入recv,隔开两次send。 sk.send(std_out) sk.send(std_err) sk.close()
原文:https://www.cnblogs.com/wc89/p/10425496.html