我想在我的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() )。 –