Twisted学习记录

本文展示了如何利用Twisted库在Python中创建一个并发服务端和客户端。服务端采用单线程设计,多线程处理由Twisted处理器完成,确保线程安全。客户端能够发送数据并接收服务端的回显。通过启动多个客户端,可以验证Twisted的并发处理能力。
摘要由CSDN通过智能技术生成

事件处理驱动器, 开发者只需要开发单线程部分的工作, 多线程交给Twisted处理器。索引不需要考虑线程安全了。

服务端代码:


from twisted.internet import protocol
from twisted.internet import reactor

SERVER_PORT = 8080


class Server(protocol.Protocol):
    def connectionMade(self):
        print('客户端的地址: %s' % self.transport.getPeer().host)

    def dataReceived(self, data):
        print('服务端接收到数据 %s' % data.decode('utf-8'))
        self.transport.write(('[echo] >: %s' % data.decode('utf-8')).encode('utf-8'))


class DefaultServerFactory(protocol.Factory):
    protocol = Server


def main():
    reactor.listenTCP(SERVER_PORT, DefaultServerFactory())
    print('服务端等待客户端连接...')
    reactor.run()


if __name__ == '__main__':
    main()

客户端代码:


from twisted.internet import protocol
from twisted.internet import reactor

SERVER_HOST = 'localhost'
SERVER_PORT = 8080


class Clinet(protocol.Protocol):
    def connectionMade(self):
        print('客户端连接成功')
        self.send()

    def send(self):
        input_data = input('输入内容>>>')
        if input_data:
            self.transport.write(input_data.encode('utf-8'))
        else:
            self.transport.loseConnection()

    def dataReceived(self, data: bytes):
        print(data.decode('utf-8'))
        self.send()


class DefaultClientFactory(protocol.ClientFactory):
    protocol = Clinet
    clinetConnectionLost = clientConnectFaild = lambda self, connector, reson: \
        reactor.stop()


def main():
    reactor.connectTCP(SERVER_HOST, SERVER_PORT, DefaultClientFactory())
    reactor.run()


if __name__ == '__main__':
    main()

可以启动多个客户端检测twisted并发操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值