我正在编写一个需要监听多个不同端口以进行多播的脚本。每当有消息进来时,我都希望根据它进入的端口执行不同的操作。 (例如,登录到不同的文件)
我的第一个想法是使用Twisted(或类似的),例如通过在他们的doco中展示多播示例(https://twistedmatrix.com/documents/14.0.0/core/howto/udp.html),但多次调用一个协议类,例如:
reactor.listenMulticast(8005, MulticastPingClient(), listenMultiple=True)
reactor.listenMulticast(8006, MulticastPingClient(), listenMultiple=True)
reactor.run()
然后使用datagramReceieved根据端口执行不同的操作。这不起作用,我强烈怀疑这不是最好的方法。
我知道这是一个广泛的问题,但希望我的目标是明确的。我没有绑定任何框架(只是Python)。任何指向优雅解决方案的指针都将非常感激。工厂似乎是一种合理的方法,但它们(逻辑上)不支持无状态协议。