Python Twisted client无法将在Windows上以不同方式工作的客户端连接到Linux/MacOS
使用Twisted endpoint connect()函数时,我试图检测失败的连接。奇怪的是,下面的语句在Windows下工作,并给出了预期的结果,但在Linux/Mac OS系统上,我从未看到errBack的print语句。是我的代码不正确,还是Windows Twisted的工作方式与其他版本不同Python Twisted client无法将在Windows上以不同方式工作的客户端连接到Linux/MacOS,python,python-2.7,twisted,Python,Python 2.7,Twisted,使用Twisted endpoint connect()函数时,我试图检测失败的连接。奇怪的是,下面的语句在Windows下工作,并给出了预期的结果,但在Linux/Mac OS系统上,我从未看到errBack的print语句。是我的代码不正确,还是Windows Twisted的工作方式与其他版本不同 class Gateway(): def __init__(self): from twisted.internet.endpoints import TCP4Clie
class Gateway():
def __init__(self):
from twisted.internet.endpoints import TCP4ClientEndpoint
endpoint = TCP4ClientEndpoint(reactor, 'localhost', 8000)
authInterfaceFactory = AuthInterfaceFactory(self.__authMsgProcessor)
d = endpoint.connect(authInterfaceFactory)
d.addErrback(self.ConnFailed)
print("WAITING...")
def ConnFailed(self, msg):
print("[DEBUG] Errback : {0}".format(msg))
Windows结果
等待。。。[DEBUG]Errback:[失败实例:回溯(失败)
无帧)::连接已断开
被另一方拒绝:10061:无法建立连接,因为
目标计算机主动拒绝了它..]
我创建了一个使用endpoint connect的客户端,它立即返回,尽管在与我的代码相同的设置中使用它时,它不会:
self.__networkThread = threading.Thread(target=reactor.run,
kwargs={"installSignalHandlers": False})
self.__networkThread.start()
from twisted.internet.endpoints import TCP4ClientEndpoint
endpoint = TCP4ClientEndpoint(reactor, 'localhost', 8000)
d = endpoint.connect(authInterfaceFactory)
d.addErrback(self.ConnFailed)
d.addCallback(self.ConnOK)
在线程中运行反应器时,逻辑是否不正确(我必须在一开始就启动它)?不能在一个线程中运行反应器,而在另一个线程中使用Twisted API。除了专门用于与线程交互的两个API之外,还必须使用来自单个线程的所有Twisted API “我希望从一开始就开始”听起来不像是使用线程的理由。许多Twisted使用程序在“开始”时启动反应器,而没有线程
(也请将此作为需要完整示例的极好示例。)我不确定你的意思。我为success添加了一个回调,但在Linux/Mac上它仍然在那里,什么也不做。我使用telnet连接8000端口,但立即出现错误$telnet localhost 8000 Trying::1。。。telnet:连接到地址::1:连接被拒绝尝试fe80::1。。。telnet:连接到地址fe80::1:连接被拒绝尝试127.0.0.1。。。telnet:连接到地址127.0.0.1:连接被拒绝telnet:无法连接到远程主机可能需要一段时间才能使tcpdump和/或dtrace参与。