2014-11-12 3 views
1

Мне нужно написать java-программу, которая получает все компьютерные сетевые интерфейсы и сканирует IP-адреса и MAC-адреса в подсети.Java ARP Scanner

Я точно не знаю, как это сделать, но я обнаружил, что есть метод, который называется:

Arping.scan(deviceName, network, mask, timeout); 

Это то, что я ищу? Что он возвращает? Комментариев нет, и я новичок в этом, поэтому не могу понять сам. Пожалуйста помоги!

+1

http://stackoverflow.com/questions/3345857/how-to-get-list-of-ip-connected-in-lan-using-java –

ответ

1

public void checkHosts(String subnet){ 
 
    int timeout=1000; 
 
    for (int i=1;i<254;i++){ 
 
     String host=subnet + "." + i; 
 
     if (InetAddress.getByName(host).isReachable(timeout)){ 
 
      System.out.println(host + " is reachable"); 
 
     } 
 
    } 
 
}

+0

Но это работает только если LAN - класс D, правильно? Это не будет работать для IP, например, 87.249.5.218 –

+0

Я сделал что-то вроде этого один раз, если вы сильно вложите его, вы можете сканировать диапазон класса B за несколько минут (с 3 повторениями каждого и постепенным отклонением). Я бежал где-то в области потоков 10k (вы можете запускать много, потому что большую часть времени вы ожидаете isReachable для тайм-аута). –

+1

Просто обратите внимание, что это использует ICMP ECHO, а не ARP. http://docs.oracle.com/javase/7/docs/api/java/net/InetAddress.html#isReachable(int) – Michael