获取本机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<NetworkInterface> 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<InetAddress> 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;
    }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容