servlet获取ip和mac地址
public String getRemoteAddress(HttpServletRequest request){
String ip = request.getHeader("x-forwarded-for");
if(ip==null||ip.length()==0||ip.equalsIgnoreCase("unknown")){
ip = request.getRemoteAddr();
}
return ip;
}
public String getMACAddress(String ip){
String str = "";
String macAddress = "";
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")>1){
macAddress = str.substring(str.indexOf("=")+2,str.length());
break;
}
}
}
}catch(Exception e){
e.printStackTrace();
}
return macAddress;
}
如果使用的是反向代理的话String ip = request.getHeader("x-forwarded-for")会有值,否则直接获取就行了。
如何获取到mac地址的话,Runtime.getRuntime().exec("");实际上是运行了cmd的命令。运行下nbstat -a +ip 这里的ip不要是localhost和127.0.0.1用你的真实ip你就能看到
这里就不上图了。