获取mac地址的方法比较多,在这里介绍两种常用的方法,在Win9x 可用:WinIPcfg获得,在2000、XP可用IPconfig -all获得。如果你处于内部局域网内,可以用 nbtstat -A IP来获取指定ip地址计算机的mac地址,后者只能在2000/XP下使用。
代码如下:
package
test.io;
import java.io. * ;
/** */ /**
* 获取本地和局域网中其他计算机MAC地址
*
* @author 左杰
*
*/
public class MacTest ... {
/** *//**
* 获取本地mac地址,同多执行dos命令ipconfig -all
*
* @return
*/
public static String getLocalMac() ...{
String MACAddr = "";
try ...{
Process process = Runtime.getRuntime().exec("ipconfig -all");
InputStreamReader ir = new InputStreamReader(process
.getInputStream());
LineNumberReader input = new LineNumberReader(ir);
String line;
while ((line = input.readLine()) != null) ...{
if (line.indexOf("Physical Address") > 0) ...{
MACAddr = line.substring(line.indexOf("-") - 2);
}
}
} catch (java.io.IOException e) ...{
System.err.println("IOException " + e.getMessage());
}
return MACAddr;
}
/** *//**
* 获取本地mac地址,同多执行dos命令nbtstat -A ip
*
* @param ip 指定ip地址
* @return
*/
public static String getMakeIpMac(String ip) ...{
String MACAddr = "";
try ...{
if (ip.equals("")) ...{
MACAddr = "ip为空!";
} else ...{
Process process = Runtime.getRuntime().exec("nbtstat -A " + ip);
InputStreamReader ir = new InputStreamReader(process
.getInputStream());
LineNumberReader input = new LineNumberReader(ir);
String line;
while ((line = input.readLine()) != null) ...{
if (line.indexOf("MAC Address") > 0) ...{
MACAddr = line.substring(line.indexOf("-") - 2);
}
}
}
} catch (java.io.IOException e) ...{
System.err.println("IOException " + e.getMessage());
}
return MACAddr;
}
/** *//**
* 测试获取地址
*
* @param args
*/
public static void main(String[] args) ...{
System.out.println("本地MAC地址为:" + getLocalMac());
String ip = "192.168.0.21";
System.out.println("ip地址为" + ip +"计算机的MAC地址为:" + getMakeIpMac(ip));
}
}
import java.io. * ;
/** */ /**
* 获取本地和局域网中其他计算机MAC地址
*
* @author 左杰
*
*/
public class MacTest ... {
/** *//**
* 获取本地mac地址,同多执行dos命令ipconfig -all
*
* @return
*/
public static String getLocalMac() ...{
String MACAddr = "";
try ...{
Process process = Runtime.getRuntime().exec("ipconfig -all");
InputStreamReader ir = new InputStreamReader(process
.getInputStream());
LineNumberReader input = new LineNumberReader(ir);
String line;
while ((line = input.readLine()) != null) ...{
if (line.indexOf("Physical Address") > 0) ...{
MACAddr = line.substring(line.indexOf("-") - 2);
}
}
} catch (java.io.IOException e) ...{
System.err.println("IOException " + e.getMessage());
}
return MACAddr;
}
/** *//**
* 获取本地mac地址,同多执行dos命令nbtstat -A ip
*
* @param ip 指定ip地址
* @return
*/
public static String getMakeIpMac(String ip) ...{
String MACAddr = "";
try ...{
if (ip.equals("")) ...{
MACAddr = "ip为空!";
} else ...{
Process process = Runtime.getRuntime().exec("nbtstat -A " + ip);
InputStreamReader ir = new InputStreamReader(process
.getInputStream());
LineNumberReader input = new LineNumberReader(ir);
String line;
while ((line = input.readLine()) != null) ...{
if (line.indexOf("MAC Address") > 0) ...{
MACAddr = line.substring(line.indexOf("-") - 2);
}
}
}
} catch (java.io.IOException e) ...{
System.err.println("IOException " + e.getMessage());
}
return MACAddr;
}
/** *//**
* 测试获取地址
*
* @param args
*/
public static void main(String[] args) ...{
System.out.println("本地MAC地址为:" + getLocalMac());
String ip = "192.168.0.21";
System.out.println("ip地址为" + ip +"计算机的MAC地址为:" + getMakeIpMac(ip));
}
}