Python - Twisted客户端- 在ping循环中检查协议传输连接

2024-09-29 23:22:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用Twisted创建TCP客户端套接字。我需要检查connectionMade方法中循环间隔中的连接状态。在

from twisted.internet import reactor, protocol

class ClientProtocol(protocol.Protocol):
    def connectionMade(self):
       while not thread_obj.stopped.wait(10):
            print ('ping')
            self.transport.write(b'test') # Byte value

对于check connection losing,我手动断开网络,然后检查了一些变量,如下所示:

^{pr2}$

但是断开网络后,任何变量值都没有改变:(

我的问题是:当连接丢失时,将设置哪些变量?我的意思是我如何检查连接状态,如果是断开连接,如何重新连接?在


Tags: 方法fromimportself网络客户端间隔状态
1条回答
网友
1楼 · 发布于 2024-09-29 23:22:49

重写connectionLost方法以捕获断开连接。 to official docs

编辑关于重新连接的信息: 重新连接大多是一个合乎逻辑的决定。您可能需要在“connectionLost”和“reconnect”之间添加逻辑。在

不管怎样, 您可以使用ReconnectingClientFactory来获得更好的代码。 ps:在重新连接时使用工厂模式是保持代码干净和智能的最佳方法。在

class MyEchoClient(Protocol):
    def dataReceived(self, data):
        someFuncProcessingData(data)
        self.transport.write(b'test')

class MyEchoClientFactory(ReconnectingClientFactory):
    def buildProtocol(self, addr):
        print 'Connected.'
        return MyEchoClient()

    def clientConnectionLost(self, connector, reason):
        print 'Lost connection.  Reason:', reason
        ReconnectingClientFactory.clientConnectionLost(self, connector, reason)

    def clientConnectionFailed(self, connector, reason):
        print 'Connection failed. Reason:', reason
        ReconnectingClientFactory.clientConnectionFailed(self, connector,
                                                     reason)

相关问题 更多 >

    热门问题