• Python进阶 网络框架Twisted-编写Twisted服务器


    预备知识:

    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()

      

  • 相关阅读:
    洛谷 P1005 矩阵取数游戏 (区间dp+高精度)
    洛谷 P1026 统计单词个数 (分组+子串预处理)(分组型dp再次总结)
    洛谷 P1052 过河 (离散化+dp)
    洛谷 P1541 乌龟棋 (四维费用背包)
    洛谷 P1736 创意吃鱼法
    矩阵旋转模板
    洛谷 P1855 榨取kkksc03 (二维费用背包)
    洛谷 P1417 烹调方案 (01背包拓展)
    关于结构体的PPT
    子进程自父进程继承什么或未继承什么
  • 原文地址:https://www.cnblogs.com/yinminbo/p/11370441.html
Copyright © 2020-2023  润新知