Проверьте, находится ли IP в локальной сети (за брандмауэрами и маршрутизаторами).

Я ползаю в Интернете около 5 часов и не могу найти решение своей проблемы:

Моя компания разрабатывает обучающую игру, и я пишу для нее средство автоматического обновления, используя Моноторрент. Игра будет использоваться в школах, но поскольку в большинстве школ очень слабое подключение к Интернету, в сети должен быть только один компьютер, который загружается с httpseeder, а остальные должны загружаться с одного компьютера, который загружается с httpseed.

Итак, я получаю множество IP-адресов от трекера, и мне нужно отфильтровать только те, которые находятся в локальной сети.

Конечно, школы иногда довольно строги с брандмауэрами, и между некоторыми будет множество маршрутизаторов и коммутаторов. компьютеры в школе.

Я уже пробовал большинство решений, таких как

 NetworkInterface[] interfaces = NetworkInterface.GetAllNetworkInterfaces();

    foreach (NetworkInterface iface in interfaces)
    {
        IPInterfaceProperties properties = iface.GetIPProperties();

        foreach (UnicastIPAddressInformation address in properties.UnicastAddresses)
        {
            Console.WriteLine(
                "{0} (Mask: {1})",
                address.Address,
                address.IPv4Mask
                );
        }
    }

или аналогичные методы, доставляют только информацию о маршрутизаторе / коммутаторе / о чем угодно.

Итак, вкратце, я хочу сделать следующее: проверьте, доступен ли данный IP-адрес через локальную сеть.

Буду очень признателен за любую помощь, потому что эта функция остается последней:)

11
задан Squirrel 29 August 2011 в 15:32
поделиться