本机服务端
import socket # 获取到socket sk = socket.socket() # 获取到地址 ip 和 端口号 address = ('127.0.0.1', 8001) # 绑定 地址 sk.bind(address) # 设置 client端的 连接、排队 人数 sk.listen(3) print('server waiting...') while True: # 阻塞 等待 client连接server conn, address = sk.accept() print(address) # 发送数据到client端 while True: # 接收 client端的 数据 client_data = conn.recv(1024) print(str(client_data, "utf8")) if not client_data: break inp = input('>>>') conn.send(bytes(inp, encoding="utf-8")) # conn.sendall(bytes('服务器关闭', encoding="utf-8")) conn.close() # 该客户关闭 # sk.close() # 服务器关闭 , 此通道不会关闭
import subprocess import socket # 获取到socket sk = socket.socket() # 获取到地址 ip 和 端口号 address = ('127.0.0.1', 8001) # 绑定 地址 sk.bind(address) # 设置 client端的 连接、排队 人数 sk.listen(3) print('server waiting...') while True: # 阻塞 等待 client连接server conn, address = sk.accept() print(address) # 发送数据到client端 while True: # 接收 client端的 数据 try: client_data = conn.recv(1024) except Exception as e: break # 判断数据是够是空 if not client_data: break print(str(client_data, "utf8")) # 获取到结果 obj = subprocess.Popen(str(client_data, 'utf8'), shell=True, stdout=subprocess.PIPE) # 将结果读取出来 cmd_result = obj.stdout.read() result_len = bytes(str(len(cmd_result)), 'utf8') conn.sendall(result_len) # 粘包问题 conn.recv(1024) # 隔断,解决粘包方法 # 发送数据到client端 conn.sendall(cmd_result) conn.close() # 该客户关闭 # sk.close() # 服务器关闭 , 此通道不会关闭