Copie o código do código da seguinte forma:
pacote com.yswc.dao.sign;
importar java.io.BufferedReader;
importar java.io.InputStreamReader;
importar java.util.regex.Matcher;
importar java.util.regex.Pattern;
/**
*
* Obtenha o endereço MAC
*
* @autor
*
*2011-12
*
*/
classe pública GetMacAddress {
public static String callCmd(String[] cmd) {
Resultado da string = "";
Linha de string = "";
tentar {
Processo proc = Runtime.getRuntime().exec(cmd);
InputStreamReader é = new InputStreamReader(proc.getInputStream());
BufferedReader br = novo BufferedReader (é);
while ((linha = br.readLine()) != null) {
resultado += linha;
}
}catch(Exceção e){
e.printStackTrace();
}
resultado de retorno;
}
/**
*
*
*
* @paramcmd
*primeiro comando
*
* @param outro
* O segundo comando
*
* @return O resultado da execução do segundo comando
*
*/
public static String callCmd(String[] cmd,String[] outro) {
Resultado da string = "";
Linha de string = "";
tentar {
Tempo de execução rt = Runtime.getRuntime();
Processo proc = rt.exec(cmd);
proc.waitFor(); // O primeiro comando foi executado e o segundo comando foi executado.
proc = rt.exec(outro);
InputStreamReader é = new InputStreamReader(proc.getInputStream());
BufferedReader br = novo BufferedReader (é);
while ((linha = br.readLine()) != null) {
resultado += linha;
}
}catch(Exceção e){
e.printStackTrace();
}
resultado de retorno;
}
/**
*
*
*
* @paramip
* IP alvo, geralmente dentro da LAN
*
* @param sourceString
* A sequência de resultados do processamento de comandos
*
* @param macSeparator
* delimitador mac
*
* @return endereço mac, representado pelo delimitador acima
*
*/
public static String filterMacAddress(final String ip, final String sourceString,final String macSeparator) {
Resultado da string = "";
String regExp = "((([0-9,AF,af]{1,2}" + macSeparator + "){1,5})[0-9,AF,af]{1,2})";
Padrão padrão = Pattern.compile(regExp);
Correspondente correspondente = pattern.matcher(sourceString);
enquanto(matcher.find()){
resultado = matcher.grupo(1);
if(sourceString.indexOf(ip) <= sourceString.lastIndexOf(matcher.group(1))) {
break; // Se houver vários IPs, apenas o Mac correspondente a este IP será correspondido.
}
}
resultado de retorno;
}
/**
*
*
*
* @paramip
* ip alvo
*
* @return Endereço Mac
*
*
*
*/
string estática pública getMacInWindows(string final ip){
Resultado da string = "";
String[] cmd = {"cmd","/c","ping " + ip};
String[] outro = {"cmd","/c","arp -a"};
String cmdResult = callCmd(cmd,outro);
resultado = filterMacAddress(ip,cmdResult,"-");
resultado de retorno;
}
/**
*
* @paramip
* ip alvo
* @return Endereço Mac
*
*/
string estática pública getMacInLinux(string final ip){
Resultado da string = "";
String[] cmd = {"/bin/sh","-c","ping " + ip + " -c 2 && arp -a" };
String cmdResult = callCmd(cmd);
resultado = filterMacAddress(ip,cmdResult,":");
resultado de retorno;
}
/**
* Obtenha o endereço MAC
*
* @return Endereço MAC de retorno
*/
String estática pública getMacAddress(String ip){
String macAddress = "";
macAddress = getMacInWindows(ip).trim();
if(macAddress==null||"".equals(macAddress)){
macAddress = getMacInLinux(ip).trim();
}
return macAddress;
}
public static void main(String[] args) {
String mac=getMacAddress("192.168.1.102");
System.out.println("mac:"+mac);
}
}