JoinMulticastGroup проходит неправильный сетевой адаптер, даже когда я указываю локальный IP-адрес - PullRequest
0 голосов
/ 17 октября 2019

У меня есть 2 сетевых адаптера, один физический и один настоящий. Я хочу присоединиться к группе многоадресной рассылки, используя метод JoinMulticastGroup () для прослушивания на физическом NIC. IP физического NIC - 10.5.1.1, а виртуальный - 10.4.3.2 (я не хочу использовать этот). Проблема в том, что, глядя на wireshark, IGMP для запроса на присоединение к многоадресной группе выходит только из виртуальной сетевой карты, даже когда я четко указываю конечную точку 10.5.1.1. Как мне решить эту проблему? Мне нужно указать сетевой адаптер (идеальный) или прослушать все сетевые карты (не идеальный). Отключение виртуальной сетевой карты в Windows - это не вариант.

            if (this.isMulticast) //problematic code
            {

                IPEndPoint localNIC_Endpoint = new IPEndPoint(ipAddressLocalNIC, listenPort);
                listener = new UdpClient(localNIC_Endpoint);    
                listener.JoinMulticastGroup(ipAddressEndpoint); // IGMP out of the 10.4.3.2 interface happens instead of going out of the 10.5.1.1 interface
            }
            else //this code below is not the problem
            {
                listener = new UdpClient
                {
                    ExclusiveAddressUse = false
                };
                listener.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
                endPoint = new IPEndPoint(ipAddressEndpoint, listenPort); 
                listener.Client.Bind(endPoint);
            }
...