Android 获取本地IP地址和广播地址

在AndroidManifest文件中配置权限:

<!-- internet -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

NetUtil文件:

/**
 * 获取本地IP地址
 */
public static String getLocalIP() {
    try {
        // 获取本地设备的所有网络接口
        Enumeration<NetworkInterface> niEnum = NetworkInterface.getNetworkInterfaces();
        while (niEnum.hasMoreElements()) {
            // 获取网络接口的所有IP地址
            Enumeration<InetAddress> addressEnum = niEnum.nextElement().getInetAddresses();
            while (addressEnum.hasMoreElements()) {
                // 返回枚举集合中的下一个IP地址信息
                InetAddress inetAddress = addressEnum.nextElement();
                // 不是回环地址,并且是IPv4地址
                if (!inetAddress.isLoopbackAddress() && inetAddress instanceof Inet4Address) {
                    return inetAddress.getHostAddress();
                }
            }
        }
    } catch (SocketException e) {
        e.printStackTrace();
    }
    return null;
}
/**
 * 获取广播地址
 */
public static String getBroadcastIP() {
    try {
        for (Enumeration<NetworkInterface> niEnum = NetworkInterface.getNetworkInterfaces(); niEnum.hasMoreElements(); ) {
            NetworkInterface ni = niEnum.nextElement();
            if (!ni.isLoopback()) {
                for (InterfaceAddress interfaceAddress : ni.getInterfaceAddresses()) {
                    if (interfaceAddress.getBroadcast() != null) {
                        return interfaceAddress.getBroadcast().getHostAddress();
                    }
                }
            }
        }
    } catch (SocketException e) {
        e.printStackTrace();
    }
    return null;
}

参考链接:

Android获取有线网ip地址

Android获取如何获取当前手机IP地址

[Android]获取局域网广播地址的两种方法

发表评论