asyncore模块提供了用来构建异步通信方式的客户端和服务器端的基础架构,特别适用于聊天类的服务器和协议的实现。基本思想是,创建一个或多个网路信道,实际上网络信道,实际上网络信道是Socket对象的封装,当信道创建后,通过调用loop()方法激活网络信道服务,直到最后一个网络信道关闭。
loop()方法是核心。在loop()方法中将会用通过select()方法检查特定的网络信道。当select()方法返回有事件的Socket对象后,loop()方法检查此事和套接字状态并创建一个高层次的时间信息,然后对应此高层事件信息调用相应的方法。
1.handle_connect()方法:将HTTP连接的时候调用;、
2.handle_close()方法:直接对Soceket对象调用close()方法,关闭连接;在HTTP关闭的时候调用;
3.handle_read()方法:调用recv()方法来获取HTTP数据,会在获取数据的时候被调用。另外,recv()方法中的参数为最大读取的字节数。需要注意的是,缓冲区的大小最好选择2的幂;
4.handle_read():用来处理发送时的数据。
5.writable():用来判断在什么时候发送数据。