在Python中如何使用Linux的epoll
Posted on 2017-04-14(Fri) in 并发编程 • 3 min read
从2.6开始,Python包含了访问Linux epoll库的API。这篇文章用几个简单的python 3例子来展示下这个API。欢迎大家质疑和反馈。
阻塞socket编程示例
示例1
-
用python3.0搭建了一个简单的服务:在8080端口监听HTTP请求,把它打印到控制台,并返回一个HTTP响应消息给客户端。
-
第9行:创建服务器socket。
-
第10行:允许在11行使用bind()来监听指定端口,即使这个端口最近被其他程序监听。没有这个设置的话,服务不能运行,直到一两分钟后,这个端口不再被之前的程序使用。
-
第11行:监听这台机器所有可用的IPv4地址上面的8080端口。
-
第12行:通知服务端socket开始接受来自客户端的连接。
-
第14行:这行代码直到接收到一个客户端连接才会完成。这时,服务端socket会在服务端机器上面创建一个新的socket,用来和客户端通信。这个新的socket在代码里面就是accept()调用返回的clientconnection 对象。返回的address对象代表着客户端的IP和端口。
-
第15-17行:组装从客户端传输过来的数据,直到HTTP请求完成。HTTP协议可以参考这里。
-
第18行:把请求打印到控制台,验证操作是否正确。
-
第19行:发送响应回客户端 …
Continue reading