Listar dispositivos na rede local com ping
Eu estou tentando criar uma função que lista todos os dispositivos conectados em uma rede local. O que eu faço é pingar qualquer endereço do espaço de endereço x.x.x.0 para x.x.x.255, mas parece não funcionar corretamente. Alguém poderia explicar ou estender meu código de alguma forma? Eu recebo uma resposta do telefone (10.0.0.17) e um gateway padrão (10.0.0.138). O último não deveria estar lá (na verdade eu não sei o que é um gateway padrão, mas ignoro isso). Estou perdendo o IP deste computador embora.
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;
}