我正在尝试在我的webApplication中打印已登录用户的IP地址。如果用户使用IP地址192.168.10.120:8080/WebApplication
从另一台PC(位于同一网络下,因为Web应用程序在我的电脑上运行)连接,则代码request.getRemoteAddr()
或request.getLocalAddr())
将返回其IP地址。当我从运行Web应用程序的PC登录时,我得到的IP地址为0:0:0:0:0:0:0:1。
为什么?这些命令之间有什么区别(我应该使用哪些?)。非常感谢你!
答案 0 :(得分:40)
在您的情况下,当您尝试在本地计算机上访问它时,它将返回该值。但是,让您的一位朋友访问它,您将收到getRemoteAddr
来自javadoc:
getRemoteAddr - 返回发送请求的客户端或最后一个代理的IP地址
getLocalAddr - 返回接收请求的接口的IP地址。
答案 1 :(得分:38)
当我们从IPv4迁移到IPv6时,他们正在将0:0:0:0:0:0:0:1
的环回地址(localhost)更改为127.0.0.1
,这就是您获取此地址的原因。
至于功能:
getRemoteAddr()
返回客户端IP
getLocalAddr()
返回应用程序所在服务器的IP
在
答案 2 :(得分:8)
而不是将网址作为“http://localhost:port/”提供网址为“http://IP:port/” 你会得到远程地址。
答案 3 :(得分:6)
getRemoteAddr()解决了您的目的,但如果客户在任何代理后面,那么您将获得代理的IP地址:
返回客户端或最后一个代理的Internet协议(IP)地址 发送请求。
getLocalAddr()返回运行该应用程序的服务器的IP。