使用Java获取外部IP地址

时间:2013-08-02 17:56:46

标签: java ip

如何在不联系以下任何网站的情况下,仅使用Java获取计算机的外部IP:

String ip = "";

    try
    {

        URL whatismyip;

        whatismyip = new URL("http://checkip.amazonaws.com");

        BufferedReader in = null;

        in = new BufferedReader(new InputStreamReader(whatismyip.openStream()));

        ip = in.readLine();

    } catch (UnknownHostException e)
    {
        e.printStackTrace();
    } catch (MalformedURLException e)
    {
        e.printStackTrace();
    } catch (IOException e)
    {
        e.printStackTrace();
    }

我不想要这个的原因是,如果这个网站连续一天停机,我将遇到很大问题。

编辑:

更明确地定义问题:Java是否有任何方法来获取用户的机器IP,如果是,它们是什么?

1 个答案:

答案 0 :(得分:3)

假设您在使用NAT的典型家庭环境(计算机 - 路由器 - 互联网)中,您无法从本地计算机上运行的程序获取该地址(如83.154.48.7)。您可以做的最多就是获取安装在其上的网络适配器的地址(地址如192.0.0.1),因为“外部”地址实际上是路由器的地址。

您需要询问外部网站,因为他们将回答路由器的地址(83.154.48.7),路由器会将答案发送到您的电脑。

可能性是询问路由器的IP,但从PC上看,路由器的网络地址为192.0.0.255。 (不知道你是否可以在路由器中获取所有地址并过滤它们)

  

如果有一天这个网站倒闭,我会遇到很大问题。

您可以拥有一个可以从中获取地址的网站列表,然后逐个尝试,直到其中一个网站启动。

相关问题