【问题标题】:Getting IP in Java [duplicate]用Java获取IP [重复]
【发布时间】:2013-08-17 18:28:53
【问题描述】:

在 Java 中获取 IP 地址的最佳方法是什么?我正在尝试getLocalHost(),但它返回了我的计算机 IP 地址。我想要this 之类的东西。 我也试图通过 HTML 从类似的服务中获取 IP,但我认为这不是一个好主意。

【问题讨论】:

  • @Joey 这篇文章是关于在客户端计算机中通过 PPP 连接的客户端,因此它在计算机上具有可用的公共 IP。最后一个答案就是它所说的,调用外部服务来获取 IP。

标签: java ip-address


【解决方案1】:

以下使用亚马逊网络服务并为我工作。

import java.net.*;
import java.io.*;
public class IPTest{    
    public static void main(String args[]) throws Exception{
            URL whatismyip = new URL("http://checkip.amazonaws.com/");
            BufferedReader in = new BufferedReader(new InputStreamReader(
                            whatismyip.openStream()));

            String ip = in.readLine(); //you get the IP as a String
            System.out.println("My IP address:"+ip);
    }
}

【讨论】:

    【解决方案2】:

    你想获得你的互联网(有人会公开,我不完全同意这个词)IP 地址。基本上你有两个选择,或者调用一个外部服务(它不需要是这样的站点,它可以是一个 STUN,或者任何为此而设计的东西),或者你可以从你的调制解调器/路由器/NAT 中获取它。

    如果在设备中启用,您可以使用 UPnP,这是一个好方法。

    其他选项不是尝试从外部服务解析或获取结果, 你从你的设备网页获取它,有些设备甚至不需要管理员权限来获取这些信息,所以你只需要解析页面来获取信息。

    大多数答案只是说您使用外部服务,就像您说的那样,这不是一个好主意。在我看来,它不是最好的,因为您依赖于外部服务提供商。如果它改变了任何你需要改变的东西,就好像他们破坏了服务一样。

    因此,如果您可以在自己的 LAN 中实现它会更好,但并不容易。

    【讨论】:

      猜你喜欢
      • 2013-10-28
      • 2013-12-04
      • 2011-10-31
      • 2013-08-04
      • 2013-08-19
      • 2016-06-21
      • 2015-08-05
      • 2011-06-24
      • 2015-11-17
      相关资源
      最近更新 更多