Listen Sie Geräte im lokalen Netzwerk mit Ping auf
Ich versuche eine Funktion zu erstellen, die alle angeschlossenen Geräte in einem lokalen Netzwerk auflistet. Was ich tue, ist, jede Adresse von Adressraum x.x.x.0 bis x.x.x.255 zu pingen, aber es scheint nicht richtig zu funktionieren. Könnte jemand meinen Code irgendwie erklären oder erweitern? Ich erhalte eine Antwort vom Telefon (10.0.0.17) und einem Standard-Gateway (10.0.0.138). Letzterer sollte nicht einmal da sein (eigentlich weiß ich nicht, was ein Standard-Gateway ist, aber ignoriere das). Ich vermisse die IP von diesem Computer.
public ArrayList<InetAddress> getConnectedDevices(String YourPhoneIPAddress) {
ArrayList<InetAddress> ret = new ArrayList<InetAddress>();
LoopCurrentIP = 0;
// String IPAddress = "";
String[] myIPArray = YourPhoneIPAddress.split("\\.");
InetAddress currentPingAddr;
for (int i = 0; i <= 255; i++) {
try {
// build the next IP address
currentPingAddr = InetAddress.getByName(myIPArray[0] + "." +
myIPArray[1] + "." +
myIPArray[2] + "." +
Integer.toString(LoopCurrentIP));
// 50ms Timeout for the "ping"
if (currentPingAddr.isReachable(50)) {
if(currentPingAddr.getHostAddress() != YourPhoneIPAddress){
ret.add(currentPingAddr);
}
}
} catch (UnknownHostException ex) {
} catch (IOException ex) {
}
LoopCurrentIP++;
}
return ret;
}