client端执行命令,server端返回命令结果
# server 端import socket, subprocesssk = socket.socket()address=('127.0.0.1', 8000)sk.bind(address)sk.listen(3)print('waiting....')while 1: conn, addr = sk.accept() print(addr) while 1: try: data = conn.recv(1024) except Exception: break if not data: break print('.........', str(data, 'utf8')) obj = subprocess.Popen(data.decode('utf8'), shell=True, stdout=subprocess.PIPE) cmd_result = obj.stdout.read() result_len = bytes(str(len(cmd_result)), 'utf8') print('>>>>>>', result_len) conn.sendall(result_len) conn.recv(1024) # 预防粘包现象 conn.sendall(cmd_result)sk.close()# client 端import socketsk = socket.socket()print(sk)address = ('127.0.0.1', 8000)sk.connect(address)while True: inp = input('>>>') if inp == 'exit': break sk.send(bytes(inp, 'utf8')) result_len = int(str(sk.recv(1024), 'utf8')) sk.sendall(bytes('ok', 'utf8')) print(result_len) data = bytes() while len(data) != result_len: recv = sk.recv(1024) data += recv print(str(data, 'gbk'))sk.close()