[轉]jsp獲取客戶端ip和mac地址
2009年04月10日 星期五 16:02

最近做一個安全系統,需要對用戶的 ip 和 mac 地址進行驗證,這里用到獲取客戶端ip和mac地址的兩個方法,留存。

1.獲取客戶端ip地址( 這個必須從客戶端傳到后臺):
   jsp頁面下,很簡單,request.getRemoteAddr() ;
   因為系統的VIew層是用JSF來實現的,因此頁面上沒法直接獲得類似request,在bean里做了個強制轉換
   public String getMyIP() {
        try {
            FacesContext fc = FacesContext.getCurrentInstance();
            HttpServletRequest request = (HttpServletRequest)fc.getExternalContext().getRequest();
            return request.getRemoteAddr();
        }
        catch (Exception e) {
            e.printStackTrace();
        }
        return "";
    }

2.獲取客戶端mac地址
    調用window的命令,在后臺Bean里實現 通過ip來獲取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) {
                        macAddress = str.substring(str.indexOf("MAC Address") + 14, str.length());
                        break;
                    }
                }
            }
        } catch (IOException e) {
            e.printStackTrace(System.out);
        }
        return macAddress;
    }