手机版 收藏 导航

如何在Java应用程序中获取手机的IPv4和IPv6地址_如何在Java应用中获取本地IP地址和公网IP地址

原创   www.link114.cn   2024-12-28 17:36:42

如何在Java应用程序中获取手机的IPv4和IPv6地址_如何在Java应用中获取本地IP地址和公网IP地址

要获取手机的IPv4和IPv6地址,我们可以使用Java的NetworkInterface类。该类提供丰富的网络接口信息,包括网卡名称、硬件地址和IP地址等。下面是一个示例代码:


// 遍历所有的网络接口
for (NetworkInterface netInterface : Collections.list(NetworkInterface.getNetworkInterfaces())) {
    // 获取该网络接口的所有IP地址
    for (InetAddress address : Collections.list(netInterface.getInetAddresses())) {
        // 判断地址类型是否为IPv4或IPv6
        if (address instanceof Inet4Address) {
            System.out.println("IPv4 Address: " + address.getHostAddress());
        } else if (address instanceof Inet6Address) {
            System.out.println("IPv6 Address: " + address.getHostAddress());
        }
    }
}

上述代码会遍历所有的网络接口,并输出每个接口的IPv4和IPv6地址。需要注意的是,设备没有连接网络或者没有配置IPv4/IPv6地址,那么该方法可能无法获取到任何地址信息。

除获取手机的IPv4和IPv6地址,我们还可以获取设备的本地IP地址和公网IP地址。本地IP地址是指设备在局域网中的IP地址,而公网IP地址则是指设备在互联网上的IP地址。

要获取本地IP地址,我们可以使用Java的InetAddress类的getLocalHost()方法,如下所示:


InetAddress localAddress = InetAddress.getLocalHost();
System.out.println("Local IP Address: " + localAddress.getHostAddress());

要获取公网IP地址,则需要调用第三方的API服务。这里我们以ipify为例,使用其免费的API来获取公网IP地址:


URL url = new URL("https://api.ipify.org");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");

int responseCode = connection.getResponseCode();
if (responseCode == HttpURLConnection.HTTP_OK) {
    BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
    String publicIP = in.readLine();
    System.out.println("Public IP Address: " + publicIP);
} else {
    System.out.println("Failed to get public IP address.");
}

上述代码使用HttpURLConnection向ipify的API发送GET请求,并获取返回的公网IP地址。需要注意的是,网络连接出现问题或者API服务不可用,则可能无法获取到公网IP地址。

在Java应用程序中获取手机的IPv4和IPv6地址以及本地IP和公网IP地址,可以通过使用Java标准API和第三方API服务来实现。通过NetworkInterface类获取IPv4和IPv6地址,使用InetAddress类获取本地IP地址,再通过调用ipify等公网IP地址服务获取公网IP地址。这些功能在开发网络相关的Java应用程序时非常有用。