首页 > 其他 > 详细

0X04Twisted Teactor TCP Server

时间:2020-03-17 12:25:27      阅读:70      评论:0      收藏:0      [点我收藏+]

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

 

0X04Twisted Teactor TCP Server

原文:https://www.cnblogs.com/aaron456-rgv/p/12509661.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!