0

有人可以告诉如何单独使用套接字库编写非阻塞服务器代码。谢谢

4

4 回答 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 模块无需任何更改即可使用。尽管代码看起来是同步的,但它是异步执行的。

示例: http ://eventlet.net/doc/examples.html#socket-connect

于 2011-02-19T06:10:10.480 回答