servlet(java)获取客户端IP(MAC)

servlet(java)获取客户端IP(MAC)


由于出于安全性问题,javascript并不能直接获得客户端的IP。

但是后端语言确实可以的。

所以javascript可以通过ajax技术来获得后端语言得到的IP,并返回到前端。

1:通过java的servlet获取IP:

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;
}


如果是用反向代理技术的话request.getHeader("x-forwarded-for");会有值,

一般情况下,只要request.getRemoteAddr();就可以了。



2:获取MAC:

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 Address") > 1) {
if (str.indexOf("MAC") > 1) {
macAddress = str.substring(
str.indexOf("=") + 2, str.length());
break;
}
}
}
} catch (IOException e) {
e.printStackTrace(System.out);
}
return macAddress;
}


通过命令nbtstat -a ip来获得该ip相对应的mac地址。
注意:验证时url时不要用localhost或者127.0.0.1,要使用ip的方式。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值