有人可以告诉我如何单独使用套接字库来编写非阻塞服务器代码。谢谢
答案 0 :(得分:5)
答案 1 :(得分:2)
为什么单独socket
? 所以使用另一个标准库模块asyncore
要简单得多 - 如果不能,那么非常至少select
!< / p>
如果你受到家庭作业的限制只能使用socket
,那么我希望你至少可以添加threading
(或multiprocessing
),否则你就是认真运气不好 - 您可以使用timeout
创建套接字,但是在没有任何其他明显标准库模块所需的帮助的情况下处理超时套接字(以支持异步或< / strong>线程服务)确实很糟糕 - y ...; - )。
答案 2 :(得分:0)
不确定“套接字库单独”是什么意思 - 你肯定需要标准Python库中的其他模块。
最低级别的非阻止代码是select module。这允许您同时拥有许多客户端连接,并报告哪些客户端有待处理的输入。因此,您既可以选择服务器(接受)套接字,也可以选择已接受的任何客户端连接。顶部的薄层是asyncore模块。
答案 3 :(得分:0)
使用eventlets或gevent。它修补了现有的库。套接字模块可以使用而无需任何更改。虽然代码看起来是同步的,但它是异步执行的。