UDP: leer datos de todas las interfaces de red

Tengo el siguiente código para leer el mensaje de multidifusión proveniente de la red, para un puerto IP + específico

private static void ReceiveMessages(int port, string ip, CancellationToken token)
{
    Task.Factory.StartNew(() =>
        {
            using (var mUdpClientReceiver = new UdpClient())
            {
                var mReceivingEndPoint = new IPEndPoint(IPAddress.Any, port);
                mUdpClientReceiver.ExclusiveAddressUse = false;
                mUdpClientReceiver.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
                mUdpClientReceiver.ExclusiveAddressUse = false;
                mUdpClientReceiver.Client.Bind(mReceivingEndPoint);
                mUdpClientReceiver.JoinMulticastGroup(IPAddress.Parse(ip), 255);

                while (!token.IsCancellationRequested)
                {
                    byte[] receive = mUdpClientReceiver.Receive(ref mReceivingEndPoint);

                    Console.WriteLine("Message received from {0} ",mReceivingEndPoint);
                }
            }
        });
}

Tengo dos adaptadores de red de los cuales tengo datos que vienen en este puerto de multidifusión ip (confirmado por dos instancias de wirehark que monitorean cada adaptador de red). Veo en Wirehark una gran cantidad de tráfico que viene en esos puertos + Ip) para ambas tarjetas de red.

El problema es que en mi consola, solo veo mensajes provenientes de una tarjeta de red.

Comprobé dos veces con netstat, no tengo ningún otro software escuchando en mi puerto:

Entonces, ¿por qué recibo tráfico solo de una de mis dos tarjetas de red?

EDITAR:

Incluso probé lo siguiente:

private static void ReceiveMessages(int port, string ip, CancellationToken token, IEnumerable<IPAddress> ipAddresses)
{
    foreach (IPAddress ipAddress in ipAddresses)
    {
        IPAddress ipToUse = ipAddress;
        Task.Factory.StartNew(() =>
        {
            using (var mUdpClientReceiver = new UdpClient())
            {

                var mReceivingEndPoint = new IPEndPoint(ipToUse, port);
                mUdpClientReceiver.ExclusiveAddressUse = false;
                mUdpClientReceiver.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
                mUdpClientReceiver.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, 1);
                mUdpClientReceiver.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.DontRoute, 1);
                mUdpClientReceiver.ExclusiveAddressUse = false;
                mUdpClientReceiver.Client.Bind(mReceivingEndPoint);
                mUdpClientReceiver.JoinMulticastGroup(IPAddress.Parse(ip), 255);
                Console.WriteLine("Starting to listen on "+ipToUse);
                while (!token.IsCancellationRequested)
                {
                    byte[] receive = mUdpClientReceiver.Receive(ref mReceivingEndPoint);

                    Console.WriteLine("Message received from {0} on {1}",  mReceivingEndPoint,ipToUse);
                }
            }
        });
    }
}

Veo el "Empezando a escuchar en la Corrección de IP" dos veces (para mis dos IP), pero todavía muestra solo los datos provenientes de una tarjeta de red.

Editar 2

Noté algo más que también es extraño. Si desactivo la interfaz en la que recibo todos los datos y luego inicio el software, ahora obtengo los datos de la otra interfaz. Si vuelvo a activar la interfaz y reinicio el software, sigo recibiendo tráfico en la tarjeta no desactivada.

Y estoy seguro de que tengo dispositivos que me responden, que están conectados solo a una red (no a ambas)

EDITAR 3

Otra cosa: si envío un mensaje de mi parte (localhost), en todas las tarjetas de red que tengo, las veo en mis dos interfaces de red. PERO, si comienzo mi programa dos veces, solo el primer programa recibe mensajes, no el segundo.

Editar 4

Información adicional, después del primer comentario: Tengo dos tarjetas Ethernet, una con el10.10.24.78&nbsp;ip, el otro con el10.9.10.234&nbsp;ip. No soy yo quien envía datos, sino piezas de red (el puerto5353&nbsp;con esta ip es una dirección de multidifusión conocida que se usa para mDNS, por lo que debería recibir tráfico de cosas como la impresora, iTunes, Mac y algunos otros programas que creamos Los datos se multiplican en la ip224.0.0.251&nbsp;y puerto5353.

Aquí hay un código que podría usar para enviar datos en varias direcciones IP, pero como describí, si lo inicia en local, casi funciona (excepto que solo un cliente local recibe el mensaje).

private static void SendManuallyOnAllCards(int port, string multicastAddress, IEnumerable<IPAddress> ipAddresses)
{
    foreach (IPAddress remoteAddress in ipAddresses)
    {
        IPAddress ipToUse = remoteAddress;
        using (var mSendSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp))
        {
            mSendSocket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership,
                                        new MulticastOption(IPAddress.Parse(multicastAddress)));
            mSendSocket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.MulticastTimeToLive, 255);
            mSendSocket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);

            var ipep = new IPEndPoint(ipToUse, port);
            //IPEndPoint ipep = new IPEndPoint(IPAddress.Parse(multicastAddress), port);
            mSendSocket.Bind(ipep);
            mSendSocket.Connect(ipep);


            byte[] bytes = Encoding.ASCII.GetBytes("This is my welcome message");
            mSendSocket.Send(bytes, bytes.Length, SocketFlags.None);
        }
    }
}

EDITAR 5&nbsp;Aquí está el resultado de miroute print(No sabía ese comando), y en mis dos direcciones IP, siempre recibo datos en el10.9.10.234

Editar 6

Probé varias otras cosas:

Use un socket para recibir en lugar del UdpClient -> No funcionóEstablezca alguna adición socketOption en el lector (DontRoute = 1, Broadcast = 1) -> No funcionóEspecifique el MulticastInterface que el lector Socket tiene que usar (usando socketOption MulticastInterface) -> No funcionó