Это следующая прямая широковещательная рассылка UDP IPv4 с последующим прослушиванием на всех интерфейсах.
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.
Я искал и читаю столько, сколько могу, и считаю, что примерно такой путь мне нужен:
- Создание сокета IPv6.
- Добавить сокет к локальной группе многоадресной рассылки для ссылки или сайта.
- Отправка пакетов UDP на адрес многоадресной рассылки для используемой группы.
Дополнительная информация, которую я имею, заключается в том, что мне может потребоваться привязать несколько интерфейсов и сообщить сокету, используя setsockopt()
, что он также должен получать многоадресные пакеты. Наконец, getaddrinfo()
можно использовать по всем направлениям, чтобы изящно «вернуться» к IPv4, где IPv6 недоступен.
У меня большая часть этого реализована, но спотыкаюсь в основном на многоадресных частях. Предпочтителен полный пример кода на Python или яркое описание необходимых констант и адресов.