【help】python socket编程在学习解决沾包问题时,客户端无法收到结果

相应代码如下
服务器:

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应在客户端收到相应结果,但此时发送命令后无回应,程序一直等待。
求解

我测试有响应啊,输入ifconfig,返回数据

img


但是你现在的逻辑会导致后续无限循环卡死

img


这两行会导致一个死循环,为什么要做这个循环你自己琢磨一下

server.py脚本一定要先运行,然后再运行client.py脚本,没看懂你这个服务器咋写的😂有的没用上也
以前写过一个简单的你可以对比一下https://superman12138.blog.csdn.net/article/details/123054697