zoukankan      html  css  js  c++  java
  • 0X04-Twisted Teactor TCP Server

    Twisted Teactor TCP Server

    #! /usr/bin/env python
    from twisted.internet import protocol,reactor
    from time import ctime
    '''
    这是一个时间戳TCP服务器,它使用了Twisted Internet类
    Twisted是用Python实现的基于事件驱动的网络引擎框架:https://www.cnblogs.com/silence-cho/p/9898984.html
    '''
    PORT = 21567
    '''
    1;reactor是twisted异步框架中的核心组件,是一个基于select,poll或epoll的事件循环,其监听socket的状态,当socket状态有变化时(有新的连接请求,或接受到数据等)时,调用相应的组件来进行处理。
    2;Factory: 主要用来创建protocol,也可以定义其他操作
    3;Protocol:主要用来处理连接建立和断开时的操作,以及数据的接受和发送操作
    
    '''
    class TSServProtocol(protocol.Protocol):
        def connectionMade(self):
            clnt = self.clnt = self.transport.getPeer().host
            print('...connected from:',clnt)
        def dataReceived(self, data):
            self.transport.write(data)
    
    factory = protocol.Factory()
    factory.protocol = TSServProtocol
    print('waiting for connection...')
    reactor.listenTCP(PORT,factory)
    reactor.run()
    
    '''
    英语翻译:
        1;protocol 协议
        2;reactor 反应器
    '''

    Twisted Teactor TCP Client

    #! /usr/bin/env python
    from twisted.internet import protocol,reactor
    
    HOST = 'localhost'
    PORT = 21567
    
    class TSClntProtocol(protocol.Protocol):
        def sendData(self):
            data = input('> ')
            if data:
                print("...sending %s..." % data)
                self.transport.write(data)
            else:
                self.transport.loseConnection()
    
        def connectionMade(self):
            self.sendData()
    
        def dataReceived(self, data):
            print(data)
            self.sendData()
    
    class TSClntFactory(property.ClientFactory):
        protocol = TSClntProtocol
        clientConnectionLost = clientConnectionFailed = lambda self ,connector,reason:reactor.stop()
    
    reactor.connectTcp(HOST,PORT,TSClntFactory())
    reactor.run()
  • 相关阅读:
    总账数据访问安全性控制(5)
    XML输出中文时,无法用xsl查看(XML文件不能正常显示、中文显示乱码)
    设计抗混叠滤波器的三大指导原则(转载)
    Verilog中变量位宽注意
    学习cordic算法所得(流水线结构、Verilog标准)
    傅里叶分析的理解
    转载:Allegro实用技巧之模块复用
    c语言学习之 辗转相除法求最大公约数
    c语言学习之 正序分解整数
    新博客开张
  • 原文地址:https://www.cnblogs.com/aaron456-rgv/p/12509661.html
Copyright © 2011-2022 走看看