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

umm*_*umm 3 python udp tcp twisted

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

reactor.listenTCP(PORT, factory)
reactor.run()
Run Code Online (Sandbox Code Playgroud)

reactor.listenUDP(PORT, BaseThreadedUDPServer())
reactor.run()
Run Code Online (Sandbox Code Playgroud)

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

谢谢!

Gly*_*yph 5

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

而不是你的建议,你的程序应该是这样的:

reactor.listenTCP(PORT, factory)
reactor.listenUDP(PORT, BaseThreadedUDPServer())
reactor.run()
Run Code Online (Sandbox Code Playgroud)

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