我有一个用Python编写的服务器,它基本上接受来自客户端的传入连接,并将从它们接收的数据提供给子进程(每个连接一个实例),然后处理数据并将结果返回给服务器,以便它可以发送它回到客户端。
问题是数据正在流入,我需要能够执行多个读/写操作,而不会看到EOF。到目前为止,我一直无法提出一个解决方案,使我能够做到这一点,而不会在阅读时阻止我的服务器程序。有什么建议?感谢。
答案 0 :(得分:2)
您可以使用select.select(在Unix和Windows上可用)。
while True:
rlist, wlist, xlist = select.select([client, proc.stdout], [], [])
对select.select
的调用将阻止,直到client
套接字或proc.stdout
准备好被读取。
rlist
拥有[client.stdin, proc.stdout]
的子集,可以随时阅读。
可以找到它的用法示例(虽然针对不同的问题)here。
答案 1 :(得分:0)
听起来你必须建立一个UDP服务器和客户端。