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

yay*_*zis 45 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.

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

Abu*_*kar 49

在您的情况下,当您尝试在本地计算机上访问它时,它将返回该值.但是,让你的一个朋友访问它,你将收到预期的结果getRemoteAddr

来自javadoc:

getRemoteAddr - 返回发送请求的客户端或最后一个代理的IP地址

getLocalAddr - 返回接收请求的接口的IP地址.


Rob*_*der 44

当我们从IPv4转移到IPv6时,他们正在将环回地址(localhost)更改0:0:0:0:0:0:0:1127.0.0.1这就是为什么要获取此地址.

至于功能:

  • getRemoteAddr() 返回客户端IP

  • getLocalAddr() 返回运行应用程序的服务器的IP


Ank*_*thi 6

getRemoteAddr()解决了你的目的,但如果客户端在任何代理后面,那么你将获得代理的IP地址:

返回发送请求的客户端或最后一个代理的Internet协议(IP)地址.

getLocalAddr()返回运行应用程序的服务器的IP.