我想在 TCP 服务器上运行可执行文件,并以交互方式从套接字连接获取其输入,并将输出发送回客户端,直到可执行文件终止。我正在尝试通过 subprocess 的 Popen 类进行管道传输,但它对与可执行文件的交互没有帮助(它只接受一次输入,但我希望输入全部被接受)直到程序退出的时间)。
假设我向服务器发送“1”输入,那么服务器必须将与“1”输入相对应的标准输出发送给客户端,然后请求下一个输入,直到可执行文件继续退出。
最佳答案
只需提供套接字作为子进程的标准输入、输出和错误。例如:
import socket
import subprocess
listener = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
listener.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True)
listener.bind(('0.0.0.0', 0))
listener.listen(5)
print(listener.getsockname())
try:
while True:
client, addr = listener.accept()
subprocess.Popen(['cat'], stdin=client, stdout=client, stderr=client)
client.close()
except KeyboardInterrupt:
pass
finally:
listener.close()
这可能需要兼容 POSIX 的操作系统。
关于python - 在 Python 中通过服务器与可执行文件交互?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24444484/