import socket import os server=socket.socket() server.bind(('127.0.0.1',6969)) server.listen() while True:#保证能与多个通话 conn,addr=server.accept() print('与',addr,'通话') while True:#保证与某一个一直通话 data=conn.recv(1024) if not data: print('客户端已经断开') break print('接收的数据',data) print('开始执行程序') res=os.popen(data.decode()).read() print('before send',len(res)) if len(res)==0: res='没有结果' file_size=len(res.encode()) print(file_size) conn.send(str(file_size).encode('utf-8')) conn.send((res.encode('utf-8'))) print('send done') server.close()socket
import socket import os client=socket.socket() client.connect(('127.0.0.1',6969)) while True: cmd=input('>>:') if len(cmd)==0: continue client.send(cmd.encode('utf-8')) total_size=client.recv(1024)#总的数据大小 print('总的大小:',total_size) received_size=0 while received_size<int(total_size.decode()): res=client.recv(1028)#设置为1024是一直出错,因此设置为1028又正确啦 print(received_size) print(res.decode()) received_size +=len(res) else: print('zuizhongdaxiao',received_size) client.close()ui
注意:len('汉')的长度为1 len(('汉').encode())的长度为3code