最近做乙個安全系統,需要對使用者的 ip 和 mac 位址進行驗證,這裡用到獲取客戶端ip和mac位址的兩個方法,留存。
1.獲取客戶端ip位址( 這個必須從客戶端傳到後台):
jsp頁面下,很簡單,request.getremoteaddr() ;
因為系統的view層是用jsf來實現的,因此頁面上沒法直接獲得類似request,在bean裡做了個強制轉換
public string getmyip()
catch (exception e)
return "";
}2.獲取客戶端mac位址
呼叫window的命令,在後台bean裡實現 通過ip來獲取mac位址。方法如下:
public string getmacaddress(string ip)}}
} catch (ioexception e)
return macaddress;
}補充:
關於獲取ip位址的方式,最近在linux下有乙個教訓,如果單純通過inetaddress來獲取ip位址,就會出現在不同的機器上ip位址不同的問題。
inetaddress.getlocalhost().getaddress() 實際上是根據hostname來獲取ip位址的。linux系統在剛剛裝完預設的hostname是localhost,所以通過上面**獲取到的本機ip就是127.0.0.1, 相對應,比如我的hostname就是rjlin.atsig.com 返回的ip位址確是atsig.com的位址。暫時採用下面**來處理,當然還不夠靈活:
public static byte getip() throws unknownhostexception catch (socketexception e)
inetaddress ip = null;
networkinte***ce netinte***ce = null;
while (allnetinte***ces.hasmoreelements())
break;}}
if (ip != null && ip instanceof inet4address)
return b;
}
Java獲取客戶端IP
在開發工作中,我們常常需要獲取客戶端的ip。一般獲取客戶端的ip位址的方法是 request.getremoteaddr 但是在通過了apache,squid等反向 軟體就不能獲取到客戶端的真實ip位址了。原因 由於在客戶端和服務之間增加了中間 因此伺服器無法直接拿到客戶端的ip,伺服器端應用也無法...
Java獲取客戶端IP
在開發工作中,我們常常需要獲取客戶端的ip。一般獲取客戶端的ip位址的方法是 request.getremoteaddr 但是在通過了apache,squid等反向 軟體就不能獲取到客戶端的真實ip位址了。原因 由於在客戶端和服務之間增加了中間 因此伺服器無法直接拿到客戶端的ip,伺服器端應用也無法...
取得使用者客戶端IP Mac
取得使用者客戶端ip 穿過 伺服器取遠端使用者真實ip位址 public static string getclientip 如果使用 獲取真實ip 獲取mac位址 public static string getcustomermac string ip getclientip string di...