使用request.getRemoteAddr()返回0:0:0:0:0:0:0:1

时间:2013-07-31 07:35:48

标签: java jsp servlets

我正在尝试在我的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。

为什么?这些命令之间有什么区别(我应该使用哪些?)。非常感谢你!

4 个答案:

答案 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。