Dificultad para unirse a un grupo de multidifusión local de enlace IPv4

Dificultad para unirse a un grupo de multidifusión local de enlace IPv4

Estoy intentando que Python3 en Windows se una a un grupo de multidifusión local de enlace IPv4 239.255.0.3. Cuando configuré mi secuencia de comandos para unirme al grupo 224.3.29.71, recibí un mensaje del firewall de Windows, me uní exitosamente al grupo y recibí mensajes. Pero cuando cambio la dirección del grupo a 239.255.0.3 (tanto en el transmisor como en el receptor), los mensajes ya no llegan. En ambas configuraciones, puedo ver (a través de Wireshark) los paquetes que llegan a Windows. Pero no llegan a mi aplicación. Tengo un único cable Ethernet que va directamente desde mi PC con Windows (configuración de IP estática) al dispositivo integrado que transmite los paquetes de multidifusión (también configuración de IP estática).

Detalles:

  • Subred IPv4: 192.168.150.0/24
  • IP del transmisor: 192.168.150.2
  • IP del receptor: 192.168.150.5
  • Dirección de multidifusión de trabajo: 224.3.29.71
  • Dirección de multidifusión que no funciona: 239.255.0.3

Código del receptor:

import socket
import struct
import sys

multicast_group = '224.3.29.71' # WORKS
#multicast_group = '239.255.0.3' # DOES NOT WORK. OF COURSE I AM CHANGING THE TX SIDE TO MATCH.
address = ('', 32768)

# Create the socket
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

#allow other sockets to bind this port too
sock.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)

# Bind to the server address
sock.bind(address)
    
# Tell the operating system to add the socket to the multicast group
# on all interfaces.
group = socket.inet_aton(multicast_group)
mreq = struct.pack('4sL', group, socket.INADDR_ANY)
sock.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, mreq)

# Receive loop
while True:
    print('\nwaiting to receive message', address[1], file=sys.stderr)
    data, address = sock.recvfrom(1024)
    
    print('received %s bytes from %s' % (len(data), address), file=sys.stderr) 
    print(data.decode(), file=sys.stderr) 

¿Debo configurar algunas configuraciones de Windows para permitir que funcionen los grupos de multidifusión 239.*.*.*?

información relacionada