我正在尝试在我的 webApplication 中打印登录用户的 IP 地址。如果用户使用 IP 地址从另一台 PC(在同一网络下,因为 Web 应用程序在我的 PC 中运行)连接,192.168.10.120:8080/WebApplication
则代码request.getRemoteAddr()
或request.getLocalAddr())
返回他的 IP 地址。当我从运行 Web 应用程序的电脑登录时,我得到这个 IP 地址 0:0:0:0:0:0:0:1。
这是为什么?这些命令之间有什么区别(我应该使用哪个?)。非常感谢!
问问题
93347 次
3 回答
63
在您的情况下,当您尝试在本地计算机上访问它时,它将返回该值。但是让您的一位朋友访问它,您将收到预期的结果getRemoteAddr
从javadoc:
getRemoteAddr - 返回发送请求的客户端或最后一个代理的 IP 地址
getLocalAddr - 返回接收请求的接口的 IP 地址。
于 2013-07-31T07:43:56.497 回答
61
当我们从 IPv4 转移到 IPv6 时,他们正在将环回地址 (localhost) 更改为0:0:0:0:0:0:0:1
,127.0.0.1
这就是您获得此地址的原因。
至于功能:
getRemoteAddr()
返回客户端 IPgetLocalAddr()
返回运行应用程序的服务器的 IP
于 2014-06-09T06:46:07.777 回答
8
getRemoteAddr()解决了您的目的,但如果客户端在任何代理后面,那么您将获得代理的 IP 地址:
返回发送请求的客户端或最后一个代理的 Internet 协议 (IP) 地址。
getLocalAddr ()返回运行应用程序的服务器的 IP。
于 2013-07-31T07:42:24.677 回答