public class CommonUtil {
/**
*获取客户端IP
*/
public static String getRemoteHost(HttpServletRequest request) {
String ip = request.getHeader("x-forwarded-for");
if (ip == null || ip.length() == 0 || "unknown".equalsIfnoreCase(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();
}
return ip.equals("0:0:0:0:0:0:0:1") ? "127.0.0.1" : ip;
}
/*
*获取客户端Mac(效率很低,据说)
*/
public static String getMACAddress(String ip,HttpServletRequest request) {
String macAddress = (String) request.getSession().getAttribute("macAddress");
if ("error".equalsIgnoreCase(macAddress))
return null;
String str = "";
macAddress = "error";
try{
Process p = Runtime.getRuntime().exec("nbtstat -A" + ip);
InputStreamReader ir = new InputStreamReader(p.getInputStream());
LineNumberReader input = new LineNumberReader(ir);
for (int i = 1; i < 100; i++) {
str = input.readLine();
if (str != null) {
if (str.indexOf("MAC Address") > 1) {
macAddress = str.substring(str.indexOf("MAC Address") + 14, str.length());
break;
}
}
}
request.getSession().setAttribute("macAddress",macAddress);
} catch (IOException e) {
e.printStackTrace();
request.getSession().setAttribute("macAddress",macAddress);
return null;
}
return macAddress;
}
/*
*获取http请求的真实IP地址
*/
public static String getIPAddr(HttpServletRequest request) {
if (request == null)
return null;
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.getHeader("HTTP_CLIENT_IP");
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip))
ip = request.getHeader("HTTP_X_FORWARDED_FOR");
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip))
ip = request.getRemoteAddr();
if ("127.0.0.1".equals(ip) || "0:0:0:0:0:0:0:1".equals(ip))
try {
ip = InetAddress.getLocalHost().getHostAddress();
}
catch (UnknownHostException unknownhostexception) {
}
return ip;
}
}
IPUtil获取客户端IP地址和Mac
最新推荐文章于 2021-07-06 14:39:13 发布