预备知识:
1、框架(framework):框架是一组组件,内置了很多功能,可以进行纵向开发,框架中的内置功能可以用第三方库代替。框架的纵向开发区别于库(一些相关功能的模块的集合)和包的横向开发。
2、Twisted是一个事件驱动的Python网络框架,通过Twisted可以实现事件处理程序。
3、工厂模式
Python进阶 网络框架Twisted-编写Twisted服务器
Twisted采用的是基于事件的方法,所以程序的步骤:监听指定端口,然后实例化协议对象来处理连接,然后启动服务器
监听指定端口:
1、调用模块reactor中的函数listenTCP
实例化对象处理连接的步骤:
1、与客户端发起连接,具体实施:需要创建协议对象,有新连接时,?该对象调用事件处理程序connectionMade;没有连接时或者连接中断时,调用事件处理函数connectionLost。
2、有数据到来,?该对象调用处理程序,dataReceived接受来自客户端的数据;使用对象self.transport,该对象调用方法write和调用属性client(包含客户端地址-主机名和端口)发送数据给客户端。
3、与客户端断开连接(以及纵多其他的事件)
启动服务器:
1、调用模块reactor中的函数run
from twisted.internet.protocol import Protocol, Factory from twisted.internet import reactor class SimpleLogger(Protocol): def connectionMade(self): print('connection from :', self.transport.client) def connectionLost(self, reason): print(self.transport.client, 'disconnected') def dataReceived(self, data): print(data) factory = Factory() factory.protocol = SimpleLogger reactor.listenTCP(1234, factory) reactor.run()