这是我的服务器:
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'输出。不久,它仍在发送第一个命令的输出...
您能否发布输出快照。理想情况下,套接字不了解输入的结尾,因此我们需要实现某种机制来停止读取输入。我怀疑输出大于缓冲区,因此正在第二次打印。请发布输出以了解确切的行为。建议也阅读文章https://docs.python.org/3.7/howto/sockets.html。