Узнайте IP всех активных машин в сети - PullRequest
3 голосов
/ 08 августа 2011

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

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

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

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

Ответы [ 2 ]

2 голосов
/ 09 августа 2011

Вы должны отправить эхо-сообщение 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 :~]$ 
0 голосов
/ 08 августа 2011

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

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

...