如何让服务器监听TCP和UDP?

时间:2010-12-07 07:51:46

标签: python tcp udp twisted

我正在使用python twisted并且我有两个独立的服务器正在工作,一个接收TCP,一个接收UDP并且每个都使用

reactor.listenTCP(PORT, factory)
reactor.run()

reactor.listenUDP(PORT, BaseThreadedUDPServer())
reactor.run()

它们都有效但现在我想将它们组合成一个接收TCP和UDP的服务器,但它们都使用变量reactor。不是reactor扭曲的,不是我自己的。如果它是我自己的,我可以更改每个的名称。

谢谢!

2 个答案:

答案 0 :(得分:5)

这只是对MarkR答案的改写,这是正确的,但我认为说清楚其工作原理可能会更清楚一些:

您的程序应该如下所示,而不是您的建议:

reactor.listenTCP(PORT, factory)
reactor.listenUDP(PORT, BaseThreadedUDPServer())
reactor.run()

reactor.run()视为“运行整个程序,然后退出,我已完成”是有帮助的。每个程序只应运行一次reactor。但是,在运行它之前,当它运行时,您可以调用任意数量的方法来监听新协议或调用新的定时事件。

答案 1 :(得分:4)

您可以在reactor.run()

之前,在启动时多次调用listenTCP和listenUDP

然后,您的回调将在适当的时间调用适当的协议,您可以相应地处理它们。