Поиск всех локальных сетевых широковещательных адресов - PullRequest
1 голос
/ 19 октября 2011

Я создаю систему обнаружения устройств, используя широковещательное сообщение UDP.Я начал использовать UdpClient и IPAddress.Broadcast.

Решение работало для клиентов на локальной машине, но не для других клиентов в локальной сети.

Через на этот вопрос я обнаружил, что Win 7 блокирует широковещательные сообщения.Когда я вручную ввел адрес широковещательной передачи в локальной сети, он работал отлично.Теперь я хочу написать некоторый код, который будет перебирать все локальные сетевые адаптеры (что-то вроде NetworkInterfaces.GetAllNetworkInterfaces()) и находить широковещательный адрес локальной сети для сети, к которой подключен каждый адаптер, если таковой имеется.

Имеет ли это смысл?Лучше всего было пропинговать локальную подсеть, которая будет совместима с Win 7, IPv6, IPv4 и т. Д. Другими словами, универсально совместима.

Спасибо!

1 Ответ

4 голосов
/ 19 октября 2011

Хорошо, что-то вроде ...?

  foreach (NetworkInterface Interface in NetworkInterface.GetAllNetworkInterfaces())
        {
            if (Interface.SupportsMulticast)
            {
                IPInterfaceProperties IPProperties = Interface.GetIPProperties();
                foreach (IPAddressInformation  address in IPProperties.MulticastAddresses)
                {
                    Console.WriteLine(address.Address);
                }
            }
        }
    }
...