ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

0X04Twisted Teactor TCP Server

2020-03-17 11:53:13  阅读:278  来源: 互联网

标签:protocol reactor self Twisted TCP Server data 0X04Twisted def


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

 

标签:protocol,reactor,self,Twisted,TCP,Server,data,0X04Twisted,def
来源: https://www.cnblogs.com/aaron456-rgv/p/12509661.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有