Как получить список IP-адресов/имен хостов в сети используя С#
Я написал программу, которая делает именно это. У меня дома: (
Он использует Ping и NetworkInterface, чтобы найти его с помощью грубой силы.
Я в основном перебираю все интерфейсы, генерирую все адреса, которые действительны для сетевой маски интерфейса, и асинхронно пингорует их.
Это просто, но не идеально. Если в сети есть интерфейсы, которые не отвечают на пинги, они не будут перечислены. Это может быть так, если активны брандмауэры (например, брандмауэр Windows, который блокирует пинг по умолчанию).
О, да, это ужасно исчерпывающе.
EDIT: Несмотря на то, что Митч Пшеничный ответ не то, что вы просили, он напомнил мне, что вы можете использовать Dns для разрешения имен хостов всех этих адресов.
Что-то примечание: По умолчанию современные системы Windows не реагируют на запросы (например, XP с включенным брандмауэром), поэтому предлагаемый подход не будет работать надежно.
Метод, который я использую (хотя и не для Windows или С#), - это ping всей подсети, а затем просмотрите кеш ARP (поскольку машины все равно будут реагировать на запросы ARP.)
Не знаю, как это сделать на С#.
CodeProject имеет довольно грубый способ достижения этой цели с помощью команды DOS net view
: