如何使用Java获取用户机器IP

如何使用Java获取用户机器IP,java,Java,我正在尝试使用java从我的服务器获取用户的计算机IP地址 我使用了下面的代码,它在本地运行良好 URL url = new URL("http://www.geoplugin.net/json.gp?jsoncallback=?"); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"

我正在尝试使用java从我的服务器获取用户的计算机IP地址

我使用了下面的代码,它在本地运行良好

            URL url = new URL("http://www.geoplugin.net/json.gp?jsoncallback=?");

            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setRequestMethod("GET");

            BufferedReader in = new BufferedReader(
                    new InputStreamReader(conn.getInputStream()));
            String inputLine;
            StringBuffer response = new StringBuffer();

            while ((inputLine = in.readLine()) != null) {
                response.append(inputLine);
            }
            in.close();

            System.out.println(response.toString());
        }
    }
使用这个类,response显示我的本地web应用中的ip。(localhost:8080/myApp/getIp)

我将此war部署到AWS服务器,并尝试运行servlet。但这始终仅显示AWS ip地址。(myIp:8080/myApp/getIp)

它没有显示我的机器IP

我的代码有什么错误,有人能帮忙吗

  • ServletRequest.getRemoteAddr()或

  • getRemoteHost()和getRemotePort()


  • 应该返回实际客户端的详细信息

    如果您想获得客户端ip,即用户通过浏览器访问您的web应用程序,那么您可以使用(客户端脚本)javascript来实现。下面是一个简单的例子

    功能显示(响应){
    控制台日志(响应);
    var html=‘出了什么问题!’;
    if(200==响应.地理定位单元状态){
    html='将您的ip设置为:'+response.geoplugin_请求;
    }
    document.getElementById('ip')。innerHTML=html;
    }
    var script=document.createElement('script');
    script.async=true;
    script.src=http://www.geoplugin.net/json.gp?jsoncallback=show';
    document.getElementById('ip').appendChild(脚本)
    
    获取IP…
    发布前搜索。我将此war部署到AWS服务器,并尝试运行servlet。但这总是只显示AWS ip地址。。。在本地运行工作。。。正确的。。。是AWS发出请求,因此您获得AWS IP。当您连接到该站点时,您将获得IP。。。这就是工作原理。还要记住,一台机器可能有多个IP地址。现在还不清楚你想在这里实现什么,所以请澄清。这是我已经实现的。但由于我们有一些安全问题,需要使用后端。谢谢Arvind@Clara,您能在这里解决使用此类API的安全问题吗?别误会我,我只是为了理解而问。