如何在Twisted框架中将连接成功或失败传递给调用者?

2024-05-18 12:34:44 发布

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

在完成了一些基本的tutorials之后,我希望我的TCP/UDP客户机退出时带有一个指示它是否连接的代码。在Twisted中返回退出代码的正确方法是:

point = TCP4ClientEndpoint(reactor, "localhost", 1234)
d = connectProtocol(point, ClientProtocol())
reactor.run()
sys.exit(0)

然后,当进程终止时,它将以代码0退出,以指示正常终止。如果客户机不是成功连接而是超时,那么它应该如何将值传递回可以传递给的系统出口而不是常数0?你知道吗


Tags: 方法run代码localhost客户机systwistedtcp
1条回答
网友
1楼 · 发布于 2024-05-18 12:34:44

通过关注延迟的结果来确定TCP连接成功还是失败:

d = connectProtocol(point, ClientProtocol())
d.addCallbacks(
    connected,
    did_not_connect,
)

使用connecteddid_not_connect的适当实现,您应该能够将适当的值传递给后续的sys.exit调用。你知道吗

例如

class Main(object):
    result = 1

    def connected(self, passthrough):
        self.result = 0
        return passthrough

    def did_not_connect(self, passthrough):
        self.result = 2
        return passthrough

    def exit(self):
        sys.exit(self.result)

main = Main()
d = connectProtocol(point, ClientProtocol())
d.addCallbacks(
    main.connected,
    main.did_not_connect,
)
reactor.run()
main.exit()

相关问题 更多 >

    热门问题