我想在我的webApplication中打印登錄用戶的IP地址。如果用戶使用IP地址192.168.10.120:8080/WebApplication
從另一臺PC(位於同一網絡下,因爲網絡應用程序在我的電腦上運行)連接,則代碼request.getRemoteAddr()
或request.getLocalAddr())
會返回其IP地址。當我從運行Web應用程序的電腦登錄時,我得到這個IP地址0:0:0:0:0:0:0:1。
這是爲什麼?這些命令之間有什麼區別(我應該使用哪個?)。非常感謝!使用request.getRemoteAddr()返回0:0:0:0:0:0:0:1
29
A
回答
29
就你而言,由於你試圖在本地機器上訪問它,所以它會返回該值。但是,讓你的朋友訪問它一個,你會收到預期的結果與getRemoteAddr
根據JavaDoc:
getRemoteAddr - 返回發送請求的客戶機或最後一個代理服務器的IP地址
getLocalAddr - 返回接收請求的接口的IP地址。
4
getRemoteAddr()解決你的目的,但如果客戶端在任何代理,那麼你將獲得代理的IP地址:
返回發送請求的客戶機或最後一個代理 的互聯網協議(IP)地址。
getLocalAddr()返回應用程序正在運行的服務器的IP。
27
當我們從IPv4轉向IPv6時,他們正在將環回地址(localhost)從127.0.0.1
更改爲0:0:0:0:0:0:0:1
,這就是爲什麼您得到此地址。
至於功能:
getRemoteAddr()
返回客戶端的IPgetLocalAddr()
返回應用 上
-2
運行,而不是給URL服務器的IP作爲「http://localhost:port/」提供url爲「http://IP:port/」 您將獲得遠程地址。
+1
這並不回答問題,並且已經接受了答案。 – ziggystar
相關問題
- 1. request.getRemoteAddr()返回0:0:0:0:0:0:0:1在JSP頁面
- 2. 如何在Java中輸出序列'1 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 ...'?
- 3. 0 + 0 + 0 ... + 0!= 0
- 4. 錯誤0:0:0:0:0:0:0:1%0獲得IP V6客戶端
- 5. get_current_user_id()返回0 0
- 6. like pattern'[0-9] [0-9] [0-1] [0-9]'
- 7. 返回 「批准」 列的值 「是\ 0 \ 0 \ 0 \ 0 \ 0 \ 0」,而不是 「是」
- 8. 爲什麼(0> 1 + 0> 9)返回False,但((0> 1)+(0> 9))返回0?
- 9. from NSFetchedResults objectAtIndex:0返回0
- 10. 出口(0)與返回0
- 11. sfml - vector [0] .getPosition()返回0
- 12. Inet6Address.getByName(),得到用於奇數響應0:0:0:0:0:FFFF:0:0
- 13. 使用三重DES解密數據在原始文本末尾添加「\ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0」
- 14. `Math.trunc` vs`| 0` vs`<<0` vs `>> 0` vs`&-1` vs`^ 0`
- 15. 保證`Math.cos(0)=== [Math.cos] [0](0)`?
- 16. tensorflow除以0/0 =:0
- 17. 0 0 == 0(#evaluates爲真?)
- 18. VB.NET - 則DateValue( 「0:0:0」)
- 19. openstreetmaps 0/0/0.png 404
- 20. CopyFileW返回0,但GetLastError也返回0
- 21. SetWindowsHookEx返回0,GetLastWin32Error()也返回0
- 22. 在Octave/Matlab中,如何將[1,2,4,8]變成[1 1 0 1 0 0 0 1]?
- 23. 雙後0/0
- 24. 補碼0-0
- 25. wilcoxon 0 0
- 26. NumPy:用0除零返回0
- 27. 在websocket上使用TcpClient接收數據get \ 0 \ 0 \ 0 \ 0
- 28. 如果[0] == 0和0 == [[0]]都爲真,爲什麼[0] == [[0]]爲false?
- 29. slickgrid - grid.getDataItem(0),dataView.getItem(0)和.dataView.getItemByIdx(0)返回引用
- 30. atoi from char *在C中返回0 0
localhost將返回該IP。在其他計算機上,您將看到實際的IP。 – Makky
謝謝@Makky你知道這兩個命令之間的區別嗎? – yaylitzis
'getLocalAddr()'獲取機器的IP地址以接收請求。 [來源](http://docs.oracle.com/javaee/6/api/javax/servlet/ServletRequest.html#getLocalAddr())。相反,'getRemoteAddr()'獲得機器的IP地址以請求資源[Source](http://docs.oracle.com/javaee/6/api/javax/servlet/ServletRequest.html#getRemoteAddr() )。 –