首页 > 解决方案 > Twisted 为 reactor 生成新客户端

问题描述

一般在 Twisted (Python) 中,定义一些监听器或连接或循环操作并将它们添加到反应器中,然后调用 reactor.run()。有没有办法从其他事件循环中添加新连接?假设我想要一个服务器,然后这个服务器产生其他客户端,每个客户端都有自己的数据接收范围。

谢谢

标签: pythonclienttwisted

解决方案


您可以根据需要创建与特定服务器的任意数量的客户端连接。忽略代码质量/设计模式,可以在代码中的任何位置建立客户端连接。

from twisted.internet import protocol, reactor

class SomeProtocol(protocol.Protocol):
    def dataReceived(self):
        # This is what I believe you're asking about
        for x in range(5):
            reactor.connectTCP('localhost', 8000, SomeClientFactory())

class SomeServerFactory(protocol.Factory):
    def buildProtocol(self):
        return SomeProtocol()

reactor.listenTCP(8000, SomeServerFactory())
reactor.run()

推荐阅读