Estoy tratando de crear una función que enumere todos los dispositivos conectados en una red local. Lo que hago es hacer ping a cualquier dirección del espacio de direcciones x.x.x.0 a x.x.x.255, pero parece que no funciona correctamente. ¿Alguien podría explicar o extender mi código de alguna manera? Recibo una respuesta del teléfono (10.0.0.17) y una puerta de enlace predeterminada (10.0.0.138). Este último ni siquiera debería estar allí (de hecho, no sé lo que es una puerta de enlace predeterminada, pero ignorar eso). Sin embargo, me falta el IP de esta computadora.Lista de dispositivos en la red local con ping
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;
}
Por cierto, no estoy usando un emulador, ¡uso mi teléfono! – rtc11