Java根据ip地址获取Mac地址,Java获取Mac地址

时间:2021-02-15 06:31:33

Java根据ip地址获取Mac地址,Java获取Mac地址

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.

蕃薯耀 2016年8月15日 11:07:55 星期一

http://fanshuyao.iteye.com/

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.net.UnknownHostException; public class MacUtils { /**
* 根据IP地址获取mac地址
* @param ipAddress 如:127.0.0.1
* @return
* @throws SocketException
* @throws UnknownHostException
*/
public static String getMac(String ipAddress) throws SocketException,
UnknownHostException {
String str = "";
String macAddress = "";
final String LOOPBACK_ADDRESS = "127.0.0.1";
// 如果为127.0.0.1,则获取本地MAC地址。
if (LOOPBACK_ADDRESS.equals(ipAddress)) {
InetAddress inetAddress = InetAddress.getLocalHost();
// 貌似此方法需要JDK1.6。
byte[] mac = NetworkInterface.getByInetAddress(inetAddress).getHardwareAddress();
// 下面代码是把mac地址拼装成String
StringBuilder sb = new StringBuilder();
for (int i = 0; i < mac.length; i++) {
if (i != 0) {
sb.append("-");
}
// mac[i] & 0xFF 是为了把byte转化为正整数
String s = Integer.toHexString(mac[i] & 0xFF);
sb.append(s.length() == 1 ? 0 + s : s);
}
// 把字符串所有小写字母改为大写成为正规的mac地址并返回
macAddress = sb.toString().trim().toUpperCase();
return macAddress;
} else {
// 获取非本地IP的MAC地址
try {
//System.out.println(ipAddress);
Process p = Runtime.getRuntime().exec("nbtstat -A " + ipAddress);
//System.out.println("===process=="+p);
InputStreamReader ir = new InputStreamReader(p.getInputStream());
BufferedReader br = new BufferedReader(ir); while ((str = br.readLine()) != null) {
if(str.indexOf("MAC") > 1 ){
macAddress = str.substring(str.indexOf("MAC") + 9, str.length());
macAddress = macAddress.trim();
//System.out.println("macAddress:" + macAddress);
break;
}
}
p.destroy();
br.close();
ir.close();
} catch (IOException ex) {
}
return macAddress;
}
} public static void main(String[] args) {
System.out.println(System.currentTimeMillis());
try {
System.out.println(getMac("10.10.16.170"));
} catch (Exception e) {
e.printStackTrace();
}
System.out.println(System.currentTimeMillis());
} }

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.

蕃薯耀 2016年8月15日 11:07:55 星期一

http://fanshuyao.iteye.com/