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的方式。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM