Python Twisted client无法将在Windows上以不同方式工作的客户端连接到Linux/MacOS

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

使用Twisted endpoint connect()函数时,我试图检测失败的连接。奇怪的是,下面的语句在Windows下工作,并给出了预期的结果,但在Linux/Mac OS系统上,我从未看到errBack的print语句。是我的代码不正确,还是Windows Twisted的工作方式与其他版本不同

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参与。