Python扭曲的框架多播绑定在特定的接口上

aik*_*ksa 7 python interface multicast twisted

在google上搜索高低之后我还没有找到以下问题的明确答案:大致遵循以下指南:http: //twistedmatrix.com/documents/10.2.0/core/howto/udp.html#auto3

如何将双绞线多播侦听器绑定到多播地址以及特定或所有接口上.

在查看reactor.listenMulticast时,它不为硬件接口提供抽象,只提供由IP地址表示的伪接口.我找不到只绑定多播地址的方法,例如特定接口或所有接口的224.0.0.1.任何人都可以提供更多相关信息吗?

std*_*err 3

reactor.listenMulticast返回一个twisted.internet.udp.MulticastPort对象。该对象拥有您正在侦听的套接字。因此,请保留reactor.listenMulticast的结果并设置适当的套接字选项(在本例中它看起来像SO.BINDTODEVICE)以及以空结尾的设备字符串。

import IN, socket, struct

udp_port = reactor.listenMulticast(8005, MulticastServerUDP())
dev = "eth0" + "\0"
udp_port.socket.setsockopt(socket.SOL_SOCKET, IN.SO_BINDTODEVICE, dev)
reactor.run()
Run Code Online (Sandbox Code Playgroud)

如果这直接通过调用公开,那就太好了,listenMulticast但假设这有效,这将是一个非常简单的补丁。如果这可以解决您的问题,请告诉我。

  • 至于仅绑定到指定的多播组,您应该将其作为第三个参数传递给“listenMulticast()”。 (2认同)