主要的思路
- 通过Runtime.getRutime().exec("nbtstat -A "+ip),在单独的进程中执行指定的字符串命令。这里通过 nbtstat - A ip命令获取远程终端的MAC地址在cmd下执行如下图:
- 读取进程的输入流
- 初始化MAC地址为“”
- 将所有的字母转化成大写
- 查找 MAC ADDRESS的位置,若找到了MAC ADDRESS,则表明有MAC地址,再查找“=”的位置,“=”后面就是MAC地址了
- 若没有MAC ADDRESS,MAC地址为“”
以下是代码:
public static String getMacByIp(String IP){
String MAC="";
try{
Process process =Runtime.getRuntime().exec("nbtstat -A "+IP);
InputStreamReader inputStreamReader =new InputStreamReader(process.getInputStream);
LineNumberReader lineNumberReader = new LineNumberReader(inputStreamReader);
String string="";
while((string = lineNumberReader.readLine()) !=null){
string = string.toUpperCase();
if(string.indexOf("MAC ADDRESS")>1){
int start = string.indexOf("=");
MAC=string.substring(start+1,string.length()).trim();
break;
}
}
} catch (IOException e) {
e.printStackTrace();
}
return MAC;
}