【问题标题】:How ask my outer IP address in java如何在java中询问我的外部IP地址
【发布时间】:2017-04-17 18:25:03
【问题描述】:

我有一个路由器,当我用这个命令询问我的 IP 地址时: InetAddress.getLocalHost().getHostAddress(); 然后我得到了我的内部 IP 地址。 当我进入 web 上的 www.whatismyip.com 页面时,我得到了另一个 IP 地址,那是我的真实地址。

我如何在 Java 中询问这个真实的 IP 地址?

谢谢...

【问题讨论】:

  • 当你的innerIP地址表示本地主机? 127.0.0.1
  • 我不认为你可以。除非该信息专门提供给应用程序,否则无法知道您正在使用代理或网关。最好设计代码,使其不关心您的“真实”IP 地址是什么。
  • 你可以向checkip.amazonaws.com发出HTTP请求
  • 为什么需要知道您的外部 IP 地址?
  • 因为我用 Java 写了一个聊天程序。

标签: java ip


【解决方案1】:
    public class IP {

  public String myOuterIP() {
    return(readIP("http://checkip.amazonaws.com"));
  }

  public String readIP(String url) {
    String ip = "";
    try {
      URL whatIsMyIP = new URL(url);
      InputStreamReader ir =new InputStreamReader(whatIsMyIP.openStream());
      BufferedReader in = new BufferedReader(ir);
      ip = in.readLine();
    } catch (UnknownHostException e) {
      System.out.println("UnknownHostException");
    } catch (MalformedURLException e) {
      System.out.println("MalformedURLException");
    } catch (IOException e) {
      System.out.println("IOException");
    }
    return ip;
  }
}

这是我的结果及其工作。网上有一个地址:http://checkip.amazonaws.com这是我的结果。

【讨论】:

    【解决方案2】:

    也许是这样的?

    import org.apache.commons.io.IOUtils;
    import java.io.BufferedInputStream;
    import java.net.HttpURLConnection;
    import java.net.URL;
    
    
    URL url = new URL("http://myexternalip.com/raw");
    
    HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
    
    InputStream in = new BufferedInputStream(urlConnection.getInputStream());
    
    String externalIP = IOUtils.toString(in, "UTF-8");
    

    【讨论】:

    • 嗨,它来自那个进口:org.apache.commons.io.IOUtils; ?这对我的 Java 来说是未知的。
    • 打开“项目结构”,然后选择您的模块(例如 Android Studio 中的应用程序),然后选择“依赖项”并按加号按钮。选择库依赖项。在搜索字段中键入“org.apache.commons.io”并添加“org.apache.directory.studio:org.apache.commons.io:2.4”或类似这样的东西之后,通常它是列表中的第一个。
    • 我也有同样的问题:你为什么需要你的外部 IP?由于 NAT 和其他一些因素,您无法在没有任何服务器的情况下端到端发送消息。
    • 还有另一种方法可以从 InputStream 中获取带有 IP 的字符串。 Here 更多信息。
    猜你喜欢
    • 2011-02-25
    • 2012-02-12
    • 2017-07-20
    • 2017-01-26
    • 1970-01-01
    • 2014-01-25
    • 2010-11-11
    • 2013-12-14
    • 1970-01-01
    相关资源
    最近更新 更多