客户端:
import socket client=socket.socket() client.connect(("localhost",9999)) while True: cmd=input(">>>").strip() if len(cmd)==0:continue client.send(cmd.encode("utf-8")) cmd_res_size=client.recv(1024) # print("") recevied_size=0 recevied_data=b'' while recevied_size<int(cmd_res_size.decode()): data=client.recv(1024) recevied_size+=len(data) recevied_data+=data else: print(recevied_size) print(recevied_data.decode()) client.close()
服务端
import socket import os,subprocess server=socket.socket() server.bind(('localhost',9999)) server.listen() while True: conn,addr=server.accept() print("new conn:",addr) while True: print("等待新的指令:") data=conn.recv(1024) if not data: print("客户端已断开") break cmd_res=os.popen(data.decode()).read() print("before send",len(cmd_res)) if len(cmd_res)==0: cmd_res="cmd has not output..." conn.send(str(len(cmd_res.encode())).encode("utf-8"))
client_ack = conn.recv(1024)#解决粘包问题
conn.send(cmd_res.encode("utf-8"))
print("send done") server.close()
server.close()