在完成一些基本的tutorials之后,我希望我的TCP / UDP客户端退出一个代码,指示它是否已连接。在Twisted中返回退出代码的正确方法是:
point = TCP4ClientEndpoint(reactor, "localhost", 1234)
d = connectProtocol(point, ClientProtocol())
reactor.run()
sys.exit(0)
然后,当进程终止时,它将以代码0退出以指示正常终止。如果客户端反而超时而不是成功连接,那么它应该如何将值传递回来然后传递给sys.exit而不是常量0?
答案 0 :(得分:2)
通过参与延迟的结果来确定TCP连接是成功还是失败:
d = connectProtocol(point, ClientProtocol())
d.addCallbacks(
connected,
did_not_connect,
)
通过connected
和did_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()