有人可以告诉如何单独使用套接字库编写非阻塞服务器代码。谢谢
问问题
2616 次
4 回答
5
坦率地说,只是不要(除非是为了锻炼)。Twisted Framework将为您完成所有与网络相关的事情,因此您只需编写协议而不关心传输层。编写套接字代码并不容易,所以为什么不使用其他人编写和测试的代码。
于 2009-10-04T05:48:39.013 回答
2
为什么socket
一个人?使用另一个标准库模块要简单得多——如果你asyncore
不能,至少!select
如果您受家庭作业条件的限制只能使用socket
,那么我希望您至少可以添加threading
(或multiprocessing
),否则您将严重不走运 - 您可以使用 制作套接字timeout
,但在不需要的情况下处理超时套接字任何其他明显的标准库模块(支持异步或线程服务)的帮助确实是一团糟-y ...;-)。
于 2009-10-04T05:44:01.720 回答
0
不确定“单独的套接字库”是什么意思——你肯定需要标准 Python 库中的其他模块。
最低级别的非阻塞代码是选择模块。这允许您同时拥有许多客户端连接,并报告其中哪些有待处理的输入。因此,您选择服务器(接受)套接字以及您已经接受的任何客户端连接。其上的薄层是 asyncore 模块。
于 2009-10-04T05:42:05.653 回答
0
使用 eventlets 或 gevent。它猴子修补现有的库。socket 模块无需任何更改即可使用。尽管代码看起来是同步的,但它是异步执行的。
于 2011-02-19T06:10:10.480 回答