如何在servlet java中获取客户端公共IP地址[重复]
Posted
技术标签:
【中文标题】如何在servlet java中获取客户端公共IP地址[重复]【英文标题】:How to get client public ip address in servlet java [duplicate] 【发布时间】:2014-08-16 19:56:09 【问题描述】:我正在使用带有 Java Web 应用程序的 Tomcat 服务器。 我需要来自请求的客户端公共 IP 地址。但我无法理解,我使用了 request.getHeader("x-forwarded-for") request.getRemoteAddr() 方法,但我得到客户端机器本地 IP 地址。
【问题讨论】:
***.com/questions/16163874/… 【参考方案1】:您正在本地网络中运行您的服务器。如果它在野外request.getRemoteAddr()
应该做它的工作。
如果您甚至在本地网络中确实需要您的公共 IP,因为它位于路由器后面或使用 NAT 的东西之后,您的本地网络中的公共 IP 可能都相同,这在我看来没有多大意义。即使您想获得公共 IP,也可以使用 ipecho 之类的服务:http://ipecho.net/plain
【讨论】:
如果在本地网络中就无法获取公网IP? 感谢查拉图斯特拉。我需要它,所以我会尝试这项服务。再次感谢。【参考方案2】:如果您在 JSP 中构建 Web 应用程序并希望将客户端的公共 IP 地址发送到服务器,您可以使用带有 JSP 的 javascript 来实现。
//JavaScript dynamically created to obtain CLIENT MACHINE'S IP ADDRESS
var script = document.createElement("script");
script.type = "text/javascript";
script.src = "http://www.telize.com/jsonip?callback=DisplayIP";
document.getElementsByTagName("head")[0].appendChild(script);
//below given function returns CLIENT MACHINE'S IP ADDRESS to the text box
function DisplayIP(response)
document.getElementById("clientip").value = response.ip;
IP 地址将存储在 clientip 中并将其传递给您发布表单的服务器列表并将其传递给 servlet。
【讨论】:
感谢小丑的关注。谢谢。以上是关于如何在servlet java中获取客户端公共IP地址[重复]的主要内容,如果未能解决你的问题,请参考以下文章
在java web中怎么用java代码获取访问者的IP,同时根据访问者的IP判断他是属于那个城市