Cómo unirse al grupo de multidifusión específico de origen en C # (IGMPv3)

Tenemos una aplicación C # que puede unirse y recibir datos de un grupo de multidifusión. Esto funciona bien Ahora queremos admitir IGMPv3 y poder especificar la IP de la fuente al unirnos a un grupo de multidifusión. De la documentación de MSDN, no veo cómo hacer esto. He encontrado el siguiente enlace que parece responder a mi pregunta.

http: //social.msdn.microsoft.com/Forums/en/netfxnetcom/thread/e8063f6d-22f5-445e-a00c-bf46b46c156

Y así es como implementé esto:

byte[] membershipAddresses = new byte[12]; // 3 IPs * 4 bytes (IPv4)
Buffer.BlockCopy(multicastIp.GetAddressBytes(), 0, membershipAddresses, 0, 4);
Buffer.BlockCopy(sourceIp.GetAddressBytes(), 0, membershipAddresses, 4, 4);
Buffer.BlockCopy(localIp.GetAddressBytes(), 0, membershipAddresses, 8, 4);
socket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership, membershipAddresses);

Pero obtengo una SocketException cuando llamo a SetSocketOption () con este error:The requested address is not valid in its context.

¿Alguien puede señalarme lo que estoy haciendo mal aquí? ¡Gracias

Respuestas a la pregunta(1)

Su respuesta a la pregunta