如何获取远程系统的IP地址?

How to get Remote System's IP address?

我在 JDK 1.7 平台上使用 Primefaces JSF 构建了一个 Web 应用程序。 在我的应用程序中,我有一个 IP 身份验证过程,在此过程中,每当用户登录系统的 IP 时,系统的 IP 都会存储在数据库中,并且当用户注销时,会话将关闭,IP 地址将从数据库中清除,这样做是为了从单一系统添加单一用户的功能。(即假设用户在系统上使用一个帐户登录,现在他打开另一个浏览器选项卡并打开登录页面,然后用户根据注册的 IP第一个帐号的地址,将限制用户在同一系统上使用不同的帐号登录。)

我实现了IP地址提取代​​码。并且在本地单一系统上测试时工作正常。现在我正在通过 RMI(远程方法调用)进程检查系统,方法是在另一个系统(即主服务器)上安装应用程序,现在从另一个远程系统调用应用程序,RMI 进程运行良好,Web 应用程序成功打开另一个系统。现在在登录时我遇到了实际问题,问题出在 IP 地址上,当我检查数据库中的 IP 地址时,我发现 IP 地址不是我尝试访问的远程系统的登录它是应用程序实际上是 运行.

的服务器系统

这是我用来获取 IP 地址的代码,它工作正常,因为它正在返回一个 IP 地址值。 InetAddress inetAddress=InetAddress.getLocalHost(); ipAddress=inetAddress.getHostAddress();

请帮助我解决我的问题。 提前谢谢你。

刚刚解决了问题,解决方案很简单 问题出在我的 IP 地址获取代码

我正在使用 getHostAddress() 函数来获取 IP 地址。所以它返回了主机地址,即应用程序所在的位置 运行。

所以对于我使用的解决方案,获取使用

获取的远程系统 IP
HttpServletRequest request = (HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest();
ipAddress = request.getHeader("X-FORWARDED-FOR");
if (ipAddress == null) {
ipAddress = request.getRemoteAddr();
}

这是我获取 IP 地址的解决方案。