Finden Sie alle IP-Adressen im lokalen Netzwerk
Will ich zu finden, alle IP-Adressen von Geräten im lokalen Netzwerk bin ich verbunden mit Java-code. Das nützliche Tool Advanced IP Scanner
ist in der Lage, verschiedene IP-Adressen in meinem Subnetz von 192.168.178/24
:
Laut diese Antwort, ich baute mein code der folgenden Art und Weise:
import java.io.IOException;
import java.net.InetAddress;
public class IPScanner
{
public static void checkHosts(String subnet) throws IOException
{
int timeout = 100;
for (int i = 1; i < 255; i++)
{
String host = subnet + "." + i;
if (InetAddress.getByName(host).isReachable(timeout))
{
System.out.println(host + " is reachable");
}
}
}
public static void main(String[] arguments) throws IOException
{
checkHosts("192.168.178");
}
}
Leider funktioniert das nicht so drucken Sie alle Ergebnisse, was bedeutet, dass keine IP-Adressen erreichbar sind. Warum? Es gibt Geräte in meinem lokalen Netzwerk, wie gesehen, in der Advanced IP Scanner
scan.
- Ich habe überprüft, dass code, der auf mein Netzwerk mit broadcast, nur mir IP oder versuchen "www.google.com". Sagt immer "nicht erreichbar". Überprüfen Sie diese Antwort: stackoverflow.com/questions/9922543/...
- Möglich, Duplikat der Wie man eine Liste der IP-Verbindung im gleichen Netzwerk (Subnetz) mit Java
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erhöhen Sie den timeout. Habe ich etwa 5000ms, das half mir.
In Fall, dass Sie nicht wollen, zu warten 5000ms * 254 = 21 Minuten, versuchen Sie auch diesen code mit parallelen Ping auf die Adressen:
Funktionierte perfekt für mich.
InetAddress.isReachable verwenden ICMP-ECHO-REQUEST (wie beim ping) oder eine Anfrage auf port 7 (echo port): http://docs.oracle.com/javase/7/docs/api/java/net/InetAddress.html#isReachable%28int%29
Voraus, IP-scanner-vielleicht in einem anderen Weg, um die hosts (wie ein Antrag auf radmin-port oder eine Anfrage über http).
Einem host können bis aber antwortet nicht auf ICMP-ECHO-ANFRAGE.
haben versuchen Sie ping der Gastgeber von der Kommandozeile aus?
Vielleicht versuchen Sie es mit
InetAddress.getByAddress(host)
stattgetByName
wie diese:Ich nahm dieses Beispiel für die automatische Erkennung von code von hier aus
Java 8 stream-Lösung
/24
Netzwerke, aber es gibt auch andere Netzwerk-Größen, auch.