帮助类
import java.net.InetAddress;
import java.net.InterfaceAddress;
import java.net.NetworkInterface;
import java.net.UnknownHostException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class NetUtil {
private static NetUtil net = null;
private NetUtil() {
}
public static NetUtil getInstance() {
if (net == null)
net = new NetUtil();
return net;
}
/** 获取本地ip地址 **/
public String getIp() {
String ip = "";
try {
InetAddress addr = InetAddress.getLocalHost();
ip = addr.getHostAddress();
} catch (UnknownHostException e) {
e.printStackTrace();
}
return ip;
}
/*** 因为一台机器不一定只有一个网卡呀,所以返回的是集合是很合理的 ***/
public Map<String, String> getMacMap() {
Map<String, String> tmpMacList = new HashMap<String, String>();
try {
java.util.Enumeration<NetworkInterface> en = NetworkInterface
.getNetworkInterfaces();
StringBuilder sb = new StringBuilder();
while (en.hasMoreElements()) {
NetworkInterface iface = en.nextElement();
String netName = iface.getName().trim();
List<InterfaceAddress> addrs = iface.getInterfaceAddresses();
for (InterfaceAddress addr : addrs) {
InetAddress ip = addr.getAddress();
NetworkInterface network = NetworkInterface
.getByInetAddress(ip);
if (network == null) {
continue;
}
byte[] mac = network.getHardwareAddress();
if (mac == null) {
continue;
}
sb.delete(0, sb.length());// 清空内容
for (int i = 0; i < mac.length; i++) {
sb.append(String.format("%02X%s", mac[i],
(i < mac.length - 1) ? "-" : ""));
}
tmpMacList.put(netName, sb.toString());
}
}
} catch (Exception e) {
e.printStackTrace();
}
return tmpMacList;
}
/**
* 通过如lo,net0,eth0,wlan0获取指定的Mac地址, 本地在使用Mac地址可通过,cmd输入 ipconfig -all 进行访问
*
* @param name
* @return
*/
public String getMac(String name) {
if (!StringUtil.isEmpty(name)) {
name = name.trim();
try {
Map<String, String> map = getMacMap();
return map.get(name);
} catch (Exception e) {
e.printStackTrace();
}
}
return null;
}
}
测试类
NetUtil net = NetUtil.getInstance();
System.out.println("ip:"+net.getIp());
System.out.println("MAC:"+net.getMacMap());