【发布时间】:2021-12-13 11:52:54
【问题描述】:
通常在 Twisted (Python) 中,您定义一些侦听器或连接或循环操作并将它们添加到反应器中,然后调用 reactor.run()。有没有办法从其他事件循环中添加新连接?假设我想要一个服务器,然后这个服务器生成其他客户端,每个客户端都有自己的数据接收范围。
谢谢
【问题讨论】:
通常在 Twisted (Python) 中,您定义一些侦听器或连接或循环操作并将它们添加到反应器中,然后调用 reactor.run()。有没有办法从其他事件循环中添加新连接?假设我想要一个服务器,然后这个服务器生成其他客户端,每个客户端都有自己的数据接收范围。
谢谢
【问题讨论】:
您可以根据需要创建与特定服务器的任意数量的客户端连接。无论代码质量/设计模式如何,都可以在代码中的任何位置建立客户端连接。
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()
【讨论】: