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。

  • 相关阅读:
    关于lockkeyword
    关于多层for循环迭代的效率优化问题
    Android 面试精华题目总结
    Linux基础回想(1)——Linux系统概述
    linux源代码编译安装OpenCV
    校赛热身 Problem C. Sometimes Naive (状压dp)
    校赛热身 Problem C. Sometimes Naive (状压dp)
    校赛热身 Problem B. Matrix Fast Power
    校赛热身 Problem B. Matrix Fast Power
    集合的划分(递推)
  • 原文地址:https://www.cnblogs.com/lm970585581/p/13366139.html
Copyright © 2011-2022 走看看