如何使用jsp页面获取局域网IP地址?

时间:2011-05-19 04:27:46

标签: java javascript jsp java-ee

我的应用程序是用JSP和Servlet页面编写的。每当我尝试跟踪用户的IP地址时,它都会返回计算机的全局IP地址(代理服务器地址),而不是该计算机的本地区域网络IP地址。那么,如何获取用户机器的LAN IP地址。请指导我摆脱这个问题...

2 个答案:

答案 0 :(得分:4)

尝试使用本地计算机...

1 - InetAddress thisIp = InetAddress.getLocalHost(); 结果的例子是abcNamePc/172.11.0.115它会给你两个信息 个人电脑名称和IP

获取远程计算机的IP,如果您知道计算机的名称,请使用此

InetAddress address = InetAddress.getByName("name of the machine");

String sIPAddress = request.getRemoteAddr();   //or getRemoteHost()

获取客户端的远程IP。

这有效。

答案 1 :(得分:3)

必要时,您的网络服务器只会看到向您发送请求的计算机的IP地址。如果用户位于代理服务器后面,那将是代表用户发出请求的代理服务器(因此“proxy”)。您无法再追溯请求的来源,因为它可能来自任何地方。只有代理服务器才会知道,除非它告诉您,否则您将不知道。

代理可能会发送一个额外的HTTP标头,例如X-Forwarded-For,在这种情况下,它会告诉您它的代表是谁。反过来,IP地址也可能是代理,你无法知道。此外,这些信息是无法验证的,可以伪造,所以你不应该依赖它。您获得的唯一可验证的IP地址是您的Web服务器收到请求的IP地址,并将响应发送给。

如果你的机器在局域网内,你a)开始时不会有这个问题,b)如果你这样做了,你可能能够通过机器名称查询某些东西,例如。这在很大程度上取决于网络基础设施,但不是一般化的。