获取 ISP IP 地址 Android

Obtain ISP IP Address Android

开始研究网络监控应用程序,我想知道是否有办法找出 ISP 分配的 IP 地址?

我查看了 Inet 和 WifiManager API,它们似乎给你的只是你的本地网络 IP 地址。我在下面尝试的代码,只是给了我我的本地地址。

WifiManager wm = (WifiManager) getSystemService(WIFI_SERVICE);
String ip = Formatter.formatIpAddress(wm.getConnectionInfo().getIpAddress());
TextView ipaddr = (TextView)findViewById(R.id.address);
ipaddr.setText("Your IP Address is: " + ip);

您对服务进行了 HTTP 调用,该服务告诉您您的外部 IP 是什么。 此类服务的一个示例是 ipify。

https://api.ipify.org/

文档: https://www.ipify.org

摘录:

try (java.util.Scanner s = new java.util.Scanner(new java.net.URL("https://api.ipify.org").openStream(), "UTF-8").useDelimiter("\A")) {
    System.out.println("My current IP address is " + s.next());
} catch (java.io.IOException e) {
    e.printStackTrace();
}

试试这个:

    try {
        URL ip = new URL("http://checkip.amazonaws.com/");
        BufferedReader in = new BufferedReader(new InputStreamReader(ip.openStream()));

        System.out.println(in.readLine());
    } catch (IOException e) {
        e.printStackTrace();
    }