来源:http://www.cnblogs.com/hxsyl/p/3422191.html
/**
* 获取客户端ip
*
* @param request
* @return
*/
public static String getIpAddr(HttpServletRequest request) {
String ip = request.getHeader("x-forwarded-for");
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("WL-Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr();
}
if ("0:0:0:0:0:0:0:1".equals(ip)) {
return "127.0.0.1";
}
return ip;
}
/**
* 获取MAC地址(如果获取ip为127.0.0.1的话就不会得到值了。)
* @throws UnknownHostException
* @throws SocketException
*/
public static String getMACAddress(String ip) throws SocketException, UnknownHostException {
if ("127.0.0.1".equals(ip)) {
return getLocalMac();
}
String str;
String macAddress = "";
try {
Process process = Runtime.getRuntime().exec("nbtstat -A " + ip);
InputStreamReader inputReader = new InputStreamReader(
process.getInputStream());
LineNumberReader lineReader = new LineNumberReader(inputReader);
for (int i = 1; i < 100; i++) {
str = lineReader.readLine();
if (str != null) {
if (str.indexOf("=") > 1) {
macAddress = str.substring(str.indexOf("=") + 2,
str.length());
break;
}
}
}
} catch (IOException e) {
e.printStackTrace();
}
return macAddress;
}
//获取本机mac
private static String getLocalMac() throws SocketException, UnknownHostException {
InetAddress ia = InetAddress.getLocalHost();
// 获取网卡,获取地址
byte[] mac = NetworkInterface.getByInetAddress(ia).getHardwareAddress();
StringBuffer sb = new StringBuffer("");
for (int i = 0; i < mac.length; i++) {
if (i != 0) {
sb.append("-");
}
// 字节转换为整数
int temp = mac[i] & 0xff;
String str = Integer.toHexString(temp);
if (str.length() == 1) {
sb.append("0" + str);
} else {
sb.append(str);
}
}
return sb.toString().toUpperCase();
}