获取本机IP地址

   /**
     * Get the local IP address.
     * 获取本地IP地址
     * @author: Lu Yang
     * @date: 2019-07-17 17:17:31
     * @version: v_1.0.0   
     * @return
     */
    public static String getLocalIPAddress () {
        // 网络接口(网卡、wifi)列表集合
        Enumeration networkInterfaceList = null;
        try {
            // 获取当前机器所有网络接口列表
            networkInterfaceList = NetworkInterface.getNetworkInterfaces();
            // 没有网络接口
            if (null == networkInterfaceList) {
                return null;
            }
        } catch (SocketException e) {
            e.printStackTrace();
        }
        
        // 本地IP
        String LocaIp = null;
        // 网络接口对象
        NetworkInterface networkInterface;
        // 遍历网络接口列表
        while (networkInterfaceList.hasMoreElements()) {
            // 获取下一个网络接口
            networkInterface = networkInterfaceList.nextElement();
            try {
                // 判断网络接口是否启动并运行
                if (!networkInterface.isUp()) 
                    // 如果没有遍历下一个
                    continue;
                
                // 判断网络接口是否为环回接口
                if (networkInterface.isLoopback()) 
                    continue;
                
                // 判断是否为虚拟网络接口(网卡)
                if (networkInterface.isVirtual()) 
                    continue;
                
            } catch (SocketException e) {
                e.printStackTrace();
            }
            
            // 网络接口地址集合
            Enumeration inetAddressList = networkInterface.getInetAddresses();
            if (null == inetAddressList) {
                continue;
            }
            
            // 网络接口地址对象
            InetAddress inetAddress;
            // 遍历网络接口地址集合
            while (inetAddressList.hasMoreElements()) {
                // 获取下一个网络接口地址
                inetAddress = inetAddressList.nextElement();

                if (
                        // 判断IP是否为本机地址
                        !inetAddress.isLoopbackAddress() &&
                        // 是否为地区地址
                        inetAddress.isSiteLocalAddress() &&
                        // 返回四段式IP字符串是否包含:符号
                        inetAddress.getHostAddress().indexOf(":") == -1
                    ) {
                    try {
                        LocaIp = inetAddress.toString().split("/")[1];
                    } catch (ArrayIndexOutOfBoundsException e) {
                        LocaIp = null;
                        e.printStackTrace();
                    }
                    
                }
            }
        }
        return LocaIp;
    }

你可能感兴趣的:(获取本机IP地址)