在鸿蒙OS中,NetworkInterface 类用于表示网络接口。一个网络接口通常对应设备上的一个网络连接,例如无线网卡、有线网卡等。NetworkInterface 提供了一些方法,使得你可以获取有关网络接口的信息,如接口的名称、硬件地址(MAC 地址)、IP 地址等。

以下是一个简单的示例代码,演示了如何在鸿蒙OS中使用 NetworkInterface:
import ohos.global.net.NetworkInterface;
import ohos.global.net.InterfaceAddress;
import ohos.global.net.Inet4Address;
import ohos.global.net.InetAddress;
import ohos.global.net.SocketException;

import java.util.Enumeration;

public class NetworkInterfaceExample {
    public static void main(String[] args) {
        try {
            // 获取所有网络接口
            Enumeration<NetworkInterface> networkInterfaces = NetworkInterface.getNetworkInterfaces();

            // 遍历所有网络接口
            while (networkInterfaces.hasMoreElements()) {
                NetworkInterface networkInterface = networkInterfaces.nextElement();

                // 输出网络接口的名称
                System.out.println("Interface Name: " + networkInterface.getName());

                // 输出网络接口的硬件地址(MAC地址)
                byte[] hardwareAddress = networkInterface.getHardwareAddress();
                if (hardwareAddress != null) {
                    System.out.println("Hardware Address (MAC): " + formatByteArray(hardwareAddress));
                }

                // 遍历网络接口的所有 InterfaceAddress 对象(IP地址信息)
                for (InterfaceAddress interfaceAddress : networkInterface.getInterfaceAddresses()) {
                    InetAddress inetAddress = interfaceAddress.getAddress();
                    if (inetAddress instanceof Inet4Address) {
                        System.out.println("IPv4 Address: " + inetAddress.getHostAddress());
                    }
                }

                System.out.println("----------------------");
            }

        } catch (SocketException e) {
            e.printStackTrace();
        }
    }

    // 辅助方法:将字节数组格式化为点分十进制字符串
    private static String formatByteArray(byte[] byteArray) {
        StringBuilder result = new StringBuilder();
        for (int i = 0; i < byteArray.length; i++) {
            result.append(String.format("%02X", byteArray[i]));
            if (i < byteArray.length - 1) {
                result.append(":");
            }
        }
        return result.toString();
    }
}

在这个例子中,通过调用 NetworkInterface.getNetworkInterfaces 方法获取所有的网络接口,然后遍历每个网络接口。通过调用 getName 方法获取接口的名称,通过调用 getHardwareAddress 方法获取硬件地址(MAC地址),通过遍历 getInterfaceAddresses 方法获取网络接口的所有 InterfaceAddress 对象,从中提取IPv4地址等信息。

请注意,这只是一个简单的示例,实际应用中可能需要根据具体的需求进行更复杂的处理。鸿蒙OS的相关文档和开发者手册也提供了更详细的信息和示例。


转载请注明出处:http://www.zyzy.cn/article/detail/2829/鸿蒙OS