最近在学习Twisted,在此归纳一些重要的概念和理念。
The Reactor
Reactor是Twisted的核心,它是一个循环体,也被称为事件循环。Reactor检测各种网络、文件系统和定时事件,等待事件的发生并将其正确分配到对应的事件处理函数。Twisted本身维护了一套跨平台的行为抽象并正确使用底层的无阻塞API接口。Twisted为不同的事件源提供了一个通用的接口,以便在网络协议栈的任何地方对事件作出响应都是一件很容易的事。
Reactor通常说来会完成以下的工作:
while True: timeout = time_until_next_timed_event() events = wait_for_events(timeout) events += timed_events_until(now()) for event in events: event.process()
Transports
Transport描述了网络通信中的连接细节:例如该连接是采用的面向连接的(如TCP)连接还是无连接的(如UDP)传输协议。除TCP、UDP以外,它还可以是UNIX套接字或串行端口传输。Transports实现ITransport接口并具有以下方法:
write
用非阻塞的方式将数据传至物理链路;
writeSequence
将一个字符串列表传至物理链路;
loseConnection
写入所有待传输的数据并关闭连接;
getPeer
获取远程连接的地址;
getHost
获取本地地址。
Protocols
Protocols描述了怎样异步地处理网络事件。它可以处理常见的应用层协议,如HTTP、Telnet、DNS和IMAP。Protocols实现IProtocol接口并提供以下方法:
makeConnection
建立连接;
connectionMade
在连接建立后触发该方法;
dataReceived
在数据接收时触发;
connectionLost
在连接中断时触发。
You're the grateest! JMHO