套接字发送旧数据

问题描述 投票:0回答:1

这是我的服务器:

                    s.connect((ip, int(port)))
                    while True:
                        command = input("enter command>")
                        s.send(command.encode())
                        output = s.recv(BUFFER_SIZE).decode()
                        print(output)
                    s.close()

客户:

while 1==1:
    s.listen(5)
    client_socket, client_address = s.accept()
    while True:
        results = client_socket.recv(BUFFER_SIZE).decode()
        if results.lower() == "escape":
            break
        output = subprocess.getoutput(results)
        client_socket.send(output.encode())
    client_socket.close()
    s.close()

出了什么问题:我从服务器向客户端发送了命令'dir',它成功执行并将结果发送回服务器,但是执行了不同的命令后,发送的输出仍然是'dir'输出。不久,它仍在发送第一个命令的输出...

python python-3.x sockets server subprocess
1个回答
0
投票

您能否发布输出快照。理想情况下,套接字不了解输入的结尾,因此我们需要实现某种机制来停止读取输入。我怀疑输出大于缓冲区,因此正在第二次打印。请发布输出以了解确切的行为。建议也阅读文章https://docs.python.org/3.7/howto/sockets.html

© www.soinside.com 2019 - 2024. All rights reserved.