Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使服务器侦听TCP和UDP?_Python_Tcp_Udp_Twisted - Fatal编程技术网

Python 如何使服务器侦听TCP和UDP?

Python 如何使服务器侦听TCP和UDP?,python,tcp,udp,twisted,Python,Tcp,Udp,Twisted,我使用的是PythonTwisted,我有两个独立的服务器在工作,一个接收TCP,一个接收UDP,它们各自使用 reactor.listenTCP(PORT, factory) reactor.run() 及 它们都可以工作,但现在我想将它们合并到一个服务器中,接收TCP和UDP,但它们都使用变量reactor。反应堆不是扭曲的,不是我自己的。如果它是我自己的,我可以更改每个名字 谢谢大家! 在reactor.run()之前,您可以在启动时调用listenTCP和listenUDP,次数可以根

我使用的是PythonTwisted,我有两个独立的服务器在工作,一个接收TCP,一个接收UDP,它们各自使用

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

它们都可以工作,但现在我想将它们合并到一个服务器中,接收TCP和UDP,但它们都使用变量
reactor
。反应堆不是扭曲的,不是我自己的。如果它是我自己的,我可以更改每个名字


谢谢大家!

在reactor.run()之前,您可以在启动时调用listenTCP和listenUDP,次数可以根据需要而定


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

这只是对MarkR答案的重新表述,这是正确的,但我认为可能更清楚地说明这是如何工作的:

与您的建议不同,您的计划应该如下所示:

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

reactor.run()
理解为“运行整个程序,然后退出,我完成了”是很有帮助的。每个程序只能运行一次反应器。但是,在运行它之前以及它运行时,您可以调用任意多个方法来侦听新协议或调用新的定时事件。

BaseThreadEdupServer?这里真的需要线程吗?我认为这不必要地使问题复杂化。而且,在将来,发布一个完整的、可运行的程序,而不仅仅是一个片段,也会有所帮助。我的天,谢谢你。这就是我要找的。我确实有这个想法,我只是不知道你是否可以这样做,而我是twisted的新手,所以我不是很了解它。谢谢你的解释!:-)
reactor.listenTCP(PORT, factory)
reactor.listenUDP(PORT, BaseThreadedUDPServer())
reactor.run()