gpt4 book ai didi

java - java中返回相同的公共(public)IP地址

转载 作者:行者123 更新时间:2023-12-02 10:58:08 24 4
gpt4 key购买 nike

在我的项目中,我需要找到一台机器的公共(public)IP地址。

我已经使用 Finding public ip address using java 中提到的方法实现了该方法

我有一个像 'http://182.14.10.5:8080/test/addVendor 这样的 api url '(不是确切的网址)在我的项目中,并已部署在外部 tomcat 服务器中,其公共(public) IP 地址为 187.15.161.90。

我面临的问题是:当我尝试从属于其他网络的其他设备(例如移动设备或计算机)加载此 api url 时,每个 URL 命中都会获得相同的 ip 182.14.161.90。

这就是我感到困惑的地方。程序是否是按照这个编写的,或者我得到了错误的输出。

根据搜索结果,我理解的是,当我加载特定的 api url 时,我应该根据连接不同网络的不同机器获得不同的 IP 地址。

但是我得到了部署我的项目的服务器的相同公共(public) IP (182.14.161.90)。

任何人都可以澄清并帮助我解决问题。

如有任何建议,我们将不胜感激。

谢谢

最佳答案

在我看来,您有一个通过 tomcat 部署的 Java Web 应用程序,并且想要获取用户的 IP 地址。

您在问题中链接的问题Finding public ip address using java专门用于获取运行 Java 代码的机器的 IP 地址(例如,如果您有一个桌面应用程序,并且出于某种原因想要获取运行该应用程序的机器的 IP)

如果你想获取用户的远程IP,取决于你的服务器配置

如果 Tomcat 是您环境中唯一的网络服务器,并且它前面没有任何内容,您可以使用 HttpServletRequest#getRomoteAddr 访问请求的远程 IP。 ,这将为您提供发起请求的套接字连接的 IP 地址。

除非您有代理服务器,例如 Tomcat 前面的 Apache HTTPD 或 Nginx,否则这将非常有效,在这种情况下,您需要配置服务器来发送X-Forwarded-For header ,并使用 HttpServletRequest#getHeader 获取用户的远程 IP例如,request.getHeader("X-Forwarded-For")

如果我误解了您的问题,请澄清并发表评论让我知道。

关于java - java中返回相同的公共(public)IP地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51557486/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com