2010-07-06 81 views
4

以下是一個簡單的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中的完整代碼示例,或所需常量和地址的生動描述是首選。

回答

1

這裏是鏈接到python mcast demo,既IPv4和IPv6。

+0

這不適合我。見http://stackoverflow.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