2018年7月

Writing Clients

Overview

Twisted 是一种非常灵活的框架, 它可以编写强大的客户端。 这种灵活性的代价是在编写客户端时要花费几层。 本文档介绍如何创建可用于TCP、SSL和Unix套接字的客户端。UDP在另一个文档中介绍。

在底层,实现协议解析和处理的地方是 Protocol 类。这个类通常是 twisted.internet.protocol.Protocol 的子类。大多数协议处理程序要么从这个类继承,要么从它的子类继承。当您连接到服务器时,协议类的一个实例将被实例化,当连接完成时,它将消失。这意味着在协议中不保存持久配置。

持久性配置保存在 Factory 类中,工厂类通常继承自 twisted.internet.protocol.Factory (或 twisted.internet.protocol.ClientFactory: 参见下面)。默认的工厂类只是实例化 Protocol,然后将协议对象的 factory 属性设置为指向自己(the factory)。这允许 Protocol 访问并可能修改持久配置。

- 阅读剩余部分 -

Writing Servers

Overview (概述)

本文档解释了如何使用Twisted来实现TCP服务器的网络协议解析和处理(SSL和Unix套接字服务器可以重用相同的代码). 有一个单独的文档涉及UDP。

您的协议处理类通常是 twisted.internet.protocol.Protocol 的子类。大多数协议处理程序要么从这个类继承,要么从它的子类继承。协议类的实例根据需要在每个连接中实例化,并在连接完成时消失。这意味着在协议(Protocol)中不保存持久配置。

持久性配置保存在 Factory 类中,Factory 类通常继承自 twisted.internet.protocol.Factory 。Factory 的 buildProtocol 方法用于为每个新连接创建一个协议(Protocol)。

在多个端口或网络地址上提供相同的服务是经常用到的。这就是为什么 Factory 不监听连接,实际上它对网络一无所知。有关更多信息,请参见端点文档,或 IReactorTCP.listenTCP 和其他 IReactor.listen Api (基于端点的底层 api)。

本文档将解释这个方式的每个步骤。

- 阅读剩余部分 -