相应代码如下
服务器:
import socket
import subprocess
import struct
phone=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
phone.bind(('127.0.0.1',8081))
phone.listen(5)
while True:
conn,claddr=phone.accept()
while True:
try:
data = conn.recv(1024)
print('clientdata', data)
obj = subprocess.Popen(data.decode('utf-8'), shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
total_size = len(obj.stdout.read()) + len(obj.stderr.read())
head = struct.pack('i', total_size)
conn.send(head)
print('1')
conn.send(obj.stdout.read() + obj.stderr.read())
print('2')
except ConnectionError:
break
conn.close()
phone.close()
客户端:
import socket
import struct
phone=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
phone.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
phone.connect(('127.0.0.1',8081))
while True:
msg=input('show:')
if not msg:continue
phone.send(msg.encode('utf-8'))
head=phone.recv(4)
real_head=struct.unpack('i',head)
total_size=real_head[0]
print(total_size)
recv_size=0
recv_data=b''
while recv_size<total_size:
rec=phone.recv(1024)
recv_data+=rec
recv_size+=len(rec)
print(recv_data.decode('gbk'))
phone.close()
此时发送命令,如ipconfig应在客户端收到相应结果,但此时发送命令后无回应,程序一直等待。
求解