JexSrs:
Bueno, en mi aplicación que utilizo algo de código para descubrir todos los dispositivos accesibles en la red local. Ahora quiero obtener la dirección MAC del dispositivo utilizando la dirección IP local
Quiero algo como esto: getMacAddress("192.168.1.23")
public static String getMacAddress(String ip)
{
String macAddress = ...
return macAddress;
}
He encontrado esto, pero no estoy seguro si puedo usarlo fro todos los dispositivos de LAN, en caso afirmativo, cómo lo voy a utilizar con la dirección IP de encargo?
WifiManager manager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
WifiInfo info = manager.getConnectionInfo();
String address = info.getMacAddress();
Martin Zeitler:
/proc/net/arp
es el local de ARP
caché, que al menos se ha almacenado en caché entradas (que puede estar fuera de línea).
protected String getMacAddress(String ipAddress) {
try {
BufferedReader br = new BufferedReader(new FileReader(new File("/proc/net/arp")));
String line;
while((line = br.readLine()) != null) {
if(line.contains(ipAddress)) {
/* this string still would need to be sanitized */
return line;
}
}
System.out.println(output);
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
Alternativamente, se podría escanear todo el segmento de red local -
o recuperar la ARP
memoria caché de un router de red local.