在Python中发送和接收IPv6链接本地多播UDP数据报?

问题描述:

以下是一个简单的IPv4 UDP广播,然后在所有接口上进行侦听。在Python中发送和接收IPv6链接本地多播UDP数据报?

sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 
sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, True) 
sock.bind(("", 1337)) 
sock.sendto("hello world", ("255.255.255.255", 1337)) 
while True: 
    data, addr = sock.recvfrom(0x100) 
    print "received from {0}: {1!r}".format(addr, data) 

我想调整它以发送和接收IPv4和IPv6。

我周围戳和读出尽我所能,相信下面的大致我需要走的路线:

  1. 创建IPv6插槽。
  2. 将套接字添加到链接或站点本地多播组。
  3. 将UDP数据包发送到正在使用的组的多播地址。

更多信息我的是我可能需要绑定到几个接口,并告诉套接字使用setsockopt()它也应该接收多播数据包。最后,可以全面使用getaddrinfo(),以优雅地将其“退回”到IPv6不可用的IPv4。

我有很多实现,但主要在多播部分。 Python中的完整代码示例,或所需常量和地址的生动描述是首选。

这里是链接到python mcast demo,既IPv4和IPv6。

+0

这不适合我。见http://*.com/questions/6631891/problem-with-python-multicast-demo-code – 2011-07-09 00:34:54

+3

@Johny_M链接已死亡。 – suzanshakya 2012-05-18 10:50:21

+0

也不适合我。是否有更多的双栈多路广播监听器? – enrm 2016-07-20 14:24:54