Copie el código de código de la siguiente manera:
paquete com.yswc.dao.sign;
importar java.io.BufferedReader;
importar java.io.InputStreamReader;
importar java.util.regex.Matcher;
importar java.util.regex.Pattern;
/**
*
* Obtener dirección MAC
*
* @autor
*
*2011-12
*
*/
clase pública GetMacAddress {
cadena estática pública callCmd (cadena [] cmd) {
Resultado de cadena = "";
Línea de cadena = "";
intentar {
Proceso de proceso = Runtime.getRuntime().exec(cmd);
InputStreamReader es = new InputStreamReader(proc.getInputStream());
BufferedReader br = nuevo BufferedReader (es);
mientras ((linea = br.readLine ()) != nulo) {
resultado += línea;
}
}catch(Excepción e) {
e.printStackTrace();
}
resultado de devolución;
}
/**
*
*
*
* @param cmd
* primer comando
*
*@param otro
* El segundo comando
*
* @return El resultado de la ejecución del segundo comando.
*
*/
callCmd de cadena estática pública (String [] cmd, String [] otro) {
Resultado de cadena = "";
Línea de cadena = "";
intentar {
Tiempo de ejecución rt = Runtime.getRuntime();
Proceso de proceso = rt.exec(cmd);
proc.waitFor(); // Se ha ejecutado el primer comando y se ha ejecutado el segundo comando.
proc = rt.exec(otro);
InputStreamReader es = new InputStreamReader(proc.getInputStream());
BufferedReader br = nuevo BufferedReader (es);
mientras ((linea = br.readLine ()) != nulo) {
resultado += línea;
}
}catch(Excepción e) {
e.printStackTrace();
}
resultado de devolución;
}
/**
*
*
*
*@param ip
* IP de destino, generalmente dentro de la LAN
*
* @param cadena fuente
* La cadena de resultados del procesamiento del comando.
*
* @param macSeparator
* delimitador de mac
*
* Dirección mac @return, representada por el delimitador de arriba
*
*/
filtro de cadena estática públicaMacAddress (ip de cadena final, cadena de origen de cadena final, separador de mac de cadena final) {
Resultado de cadena = "";
String regExp = "((([0-9,AF,af]{1,2}" + macSeparator + "){1,5})[0-9,AF,af]{1,2})";
Patrón patrón = Pattern.compile(regExp);
Comparador de coincidencias = patrón.matcher(sourceString);
mientras(matcher.buscar()){
resultado = emparejador.grupo(1);
if(sourceString.indexOf(ip) <= sourceString.lastIndexOf(matcher.group(1))) {
break; // Si hay varias IP, solo coincidirá la Mac correspondiente a esta IP.
}
}
resultado de devolución;
}
/**
*
*
*
* @param ip
* dirección IP de destino
*
* @return Dirección Mac
*
*
*
*/
cadena estática pública getMacInWindows (ip de cadena final) {
Resultado de cadena = "";
Cadena[] cmd = {"cmd","/c","ping " + ip};
Cadena[] otro = {"cmd","/c","arp -a"};
Cadena cmdResult = callCmd(cmd,otro);
resultado = filterMacAddress(ip,cmdResult,"-");
resultado de devolución;
}
/**
*
* @param ip
* dirección IP de destino
* @return Dirección Mac
*
*/
cadena estática pública getMacInLinux (ip de cadena final) {
Resultado de cadena = "";
String[] cmd = {"/bin/sh","-c","ping " + ip + " -c 2 && arp -a" };
Cadena cmdResult = callCmd(cmd);
resultado = filterMacAddress(ip,cmdResult,":");
resultado de devolución;
}
/**
* Obtener dirección MAC
*
* @return Dirección MAC de devolución
*/
Cadena estática pública getMacAddress (IP de cadena) {
Cadena direcciónmac = "";
direcciónmac = getMacInWindows(ip).trim();
if(direcciónmac==null||"".equals(direcciónmac)){
direcciónmac = getMacInLinux(ip).trim();
}
devolver direcciónmac;
}
público estático vacío principal (String [] argumentos) {
Cadena mac=getMacAddress("192.168.1.102");
System.out.println("mac:"+mac);
}
}