zoukankan      html  css  js  c++  java
  • 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()

      

  • 相关阅读:
    iOS 字典实现原理
    IOS中armv7,armv7s,arm64以及i386和x86_64讲解
    SDWebImage源码解析
    iOS Runtime的消息转发机制
    二叉树的遍历
    LINUX 常用命令 ps 详解
    LINUX 文件权限详解
    LINUX查看内存使用情况 free
    PHP isset() empty() isnull() 的区别
    PHP unset()函数销毁变量 但没有实现释放内存
  • 原文地址:https://www.cnblogs.com/yinminbo/p/11370441.html
Copyright © 2011-2022 走看看