我的应用程序是用JSP和Servlet页面编写的。每当我尝试跟踪用户的IP地址时,它都会返回计算机的全局IP地址(代理服务器地址),而不是该计算机的本地区域网络IP地址。那么,如何获取用户机器的LAN IP地址。请指导我摆脱这个问题...
答案 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)如果你这样做了,你可能能够通过机器名称查询某些东西,例如。这在很大程度上取决于网络基础设施,但不是一般化的。