2011-05-19 124 views
1

我有我的應用程序寫在JSP和Servlet頁面。每當我嘗試跟蹤用戶的IP地址時,它都會返回機器的全局IP地址(代理服務器地址),而不是該機器的局域網IP地址。那麼,如何獲取用戶機器的LAN IP地址。請指引我走出這個問題...如何使用jsp頁面獲取局域網IP地址?

+0

您的網絡服務器是否在該LAN之外? – deceze 2011-05-19 04:31:07

+0

@deceze:你能否給出你對這兩種情況的想法?但是我的服務器位於局域網之外。如果我的服務器位於局域網內,會發生什麼? – Saravanan 2011-05-19 04:38:22

回答

3

根據需要,您的網絡服務器只會看到向您發送請求的機器的IP地址。如果用戶位於代理服務器的後面,那麼這將是代表用戶發出請求的代理服務器(因此「代理」)。您無法追溯請求的來源,因爲它可能來自任何地方。只有代理服務器會知道,除非它告訴你,你不會知道。

代理可能會發送一個額外的HTTP標頭,如X-Forwarded-For,在這種情況下它會告訴您它代表它的行爲。這個IP地址反過來也可能是一個代理,但你不知道。此外,這些信息是無法驗證的,可能是僞造的,所以您不應該依賴它。唯一可驗證的IP地址是您的Web服務器收到請求並將響應發送到的那個IP地址。

如果你的機器在局域網內,你a)不會有這個問題開始,b)如果你這樣做了,你可以通過機器名來查詢某些東西。儘管這在很大程度上取決於網絡基礎設施,並且不具有普遍性。

+0

非常感謝你!!! ... – Saravanan 2011-05-19 08:57:12

4

試試這個一本地機器......結果

InetAddress thisIp = InetAddress.getLocalHost(); 例子是abcNamePc/172.11.0.115它會給你兩個信息 PC名稱和IP

獲取遠程計算機的IP地址,如果您知道計算機的名稱使用此

InetAddress address = InetAddress.getByName("name of the machine"); 

String sIPAddress = request.getRemoteAddr(); //or getRemoteHost() 

獲取客戶端的遠程IP。

這個工程。

+0

+1所以有用謝謝:) – shareef 2012-06-13 09:56:41