Узнать IP всех активных машин в сети

Как я могу узнать IP-адреса всех активных компьютеров в моей локальной сети? Как я могу написать общую программу, которая будет работать в любой подсети?

Я делаю это в настоящее время:

  1. Попытка, если isReachable() достигает всех машин в моей подсети.
  2. Если да, сохраните их IP-адреса.

Есть ли способ сделать это, вручную ввести маску подсети (увеличить IP-адрес) и, следовательно, достичь всех машин (и, таким образом, получить их IP-адреса)?


person P R    schedule 08.08.2011    source источник
comment


Ответы (2)


Вы должны отправить эхо-сообщение ICMP всем хостам в подсети. Например, если ваша подсеть 192.168.1.0/24, отправьте ICMP-пинг на 192.168.1.255, и все хосты ответят.

[06:43:11 :~]$ ping 192.168.0.255
PING 192.168.0.255 (192.168.0.255): 56 data bytes
64 bytes from 192.168.0.12: icmp_seq=0 ttl=64 time=0.159 ms
64 bytes from 192.168.0.1: icmp_seq=0 ttl=64 time=5.581 ms
64 bytes from 192.168.0.12: icmp_seq=1 ttl=64 time=0.135 ms
64 bytes from 192.168.0.1: icmp_seq=1 ttl=64 time=5.540 ms
^C
--- 192.168.0.255 ping statistics ---
2 packets transmitted, 2 packets received, +2 duplicates, 0.0% packet loss
round-trip min/avg/max/stddev = 0.135/2.854/5.581/2.707 ms
[06:43:21 :~]$ 
person jman    schedule 09.08.2011

Вы можете использовать DNS, DynamicDNS, WINS, LDAP или Active Directory для каждого компьютера, чтобы хранить его IP-адрес в центральном хранилище. Вы можете запросить этот репозиторий, чтобы найти все IP-адреса для вашей локальной сети.

Однако, если у вас нет такого репозитория, вам необходимо просканировать IP-адрес вашей сети, как это сделал бы любой хакер.

person Peter Lawrey    schedule 08.08.2011