解决黏包的问题
#server import socket sk = socket.socket() sk.bind(('127.0.0.1',8080)) sk.listen() conn,addr = sk.accept() while True: cmd = input('>>>>>>') if cmd == 'q': conn.send(b'quit') break conn.send(cmd.encode('gbk')) num = conn.recv(1024).decode('utf-8') print(num) conn.send(b'ok') res = conn.recv(int(num)).decode('gbk') print(res) conn.close() #client import socket import subprocess sk = socket.socket() sk.connect(('127.0.0.1',8080)) while True: cmd = sk.recv(1024).decode('gbk') if cmd == 'q': break res = subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE) std_out = res.stdout.read() std_err = res.stderr.read() sk.send(str(len(std_out)+len(std_err)).encode('utf-8')) sk.recv(1024) #ok sk.send(std_out) sk.send(std_err) sk.close()