BLOG
Enjoy when you can, and endure when you must.
JAN 03, 2014/后端开发与架构
初识Twisted:Reactor、Transports和Protocols

最近在学习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

在连接中断时触发。

COMMENTS
16/05From Rakesh

You're the grateest! JMHO

LEAVE COMMNT