zoukankan      html  css  js  c++  java
  • 获取电脑真实的IP地址,忽略虚拟机等IP地址的干扰

    /**
     * @author yins
     * @date 2018年8月12日下午9:53:58 
     */
    
    import java.net.Inet4Address;
    import java.net.InetAddress;
    import java.net.NetworkInterface;
    import java.net.SocketException;
    import java.util.Enumeration;
     
    /**
     * 获取本地真正的IP地址,即获得有线或者无线WiFi地址。
     * 过滤虚拟机、蓝牙等地址
     * @author yins
     * @date 2018年8月12日 下午9:53:58
     */
    public class GetRealLocalIP {
     
        /**
         * 获取本地真正的IP地址,即获得有线或者无线WiFi地址。
         * 过滤虚拟机、蓝牙等地址
         * @author yins
         * @date 2018年8月12日下午9:56:35
         * @return
         */
        public static String getRealIP() {
            try {
                Enumeration<NetworkInterface> allNetInterfaces = NetworkInterface
                        .getNetworkInterfaces();
                while (allNetInterfaces.hasMoreElements()) {
                    NetworkInterface netInterface = (NetworkInterface) allNetInterfaces
                            .nextElement();
     
                    // 去除回环接口,子接口,未运行和接口
                    if (netInterface.isLoopback() || netInterface.isVirtual()
                            || !netInterface.isUp()) {
                        continue;
                    }
                    
                    if (!netInterface.getDisplayName().contains("Intel")
                            && !netInterface.getDisplayName().contains("Realtek")) {
                        continue;
                    }
                    Enumeration<InetAddress> addresses = netInterface
                            .getInetAddresses();
                    System.out.println(netInterface.getDisplayName());
                    while (addresses.hasMoreElements()) {
                        InetAddress ip = addresses.nextElement();
                        if (ip != null) {
                            // ipv4
                            if (ip instanceof Inet4Address) {
                                System.out.println("ipv4 = " + ip.getHostAddress());
                                return ip.getHostAddress();
                            }
                        }
                    }
                    break;
                }
            } catch (SocketException e) {
                System.err.println("Error when getting host ip address"
                        + e.getMessage());
            }
            return null;
        }
    }

    此代码中只要读取到了WiFi或者有线地址其中之一立即return。

  • 相关阅读:
    Win7 64位环境下安装mysql5.6
    High CPU Usage 原因及分析
    SQL Server 2012 AlwaysOn 亲身实历记
    elasticsearch的简单介绍
    url().openStream 的超时问题处理
    关于数据库tinyint 字段的值范围
    linux磁盘空间不足预警的相关问题
    关于Dubbo一个接口多个实现的解决方案
    一个优化登录判断的技巧
    SimpleDateFormat的线程安全问题与解决方案
  • 原文地址:https://www.cnblogs.com/lm970585581/p/13366139.html
Copyright © 2011-2022 走看看