zoukankan      html  css  js  c++  java
  • Java 获取本机局域网内IP

    主要涉及NetworkInterfaceEnumerationInetAddress等类

     /*
        获取本机网内地址
         */
        public static InetAddress getInet4Address(){
            try {
                //获取所有网络接口
                Enumeration<NetworkInterface> allNetworkInterfaces = NetworkInterface.getNetworkInterfaces();
                //遍历所有网络接口
                for(;allNetworkInterfaces.hasMoreElements();){
                    NetworkInterface networkInterface=allNetworkInterfaces.nextElement();
                    //如果此网络接口为 回环接口 或者 虚拟接口(子接口) 或者 未启用 或者 描述中包含VM
                    if(networkInterface.isLoopback()||networkInterface.isVirtual()||!networkInterface.isUp()||networkInterface.getDisplayName().contains("VM")){
                        //继续下次循环
                        continue;
                    }
                    //如果不是Intel与Realtek的网卡
    //                if(!(networkInterface.getDisplayName().contains("Intel"))&&!(networkInterface.getDisplayName().contains("Realtek"))){
    //                         //继续下次循环
    //                            continue;
    //                }
                    //遍历此接口下的所有IP(因为包括子网掩码各种信息)
                    for(Enumeration<InetAddress> inetAddressEnumeration=networkInterface.getInetAddresses();inetAddressEnumeration.hasMoreElements();){
                            InetAddress inetAddress=inetAddressEnumeration.nextElement();
                            //如果此IP不为空
                        if(inetAddress!=null){
                            //如果此IP为IPV4 则返回
                            if(inetAddress instanceof Inet4Address){
                                return inetAddress;
                            }
                            /*
                           // -------这样判断IPV4更快----------
                            if(inetAddress.getAddress().length==4){
                                return inetAddress;
                            }
    
                             */
    
                        }
                    }
    
    
                }
                return null;
    
            }catch(SocketException e){
                e.printStackTrace();
                return null;
            }
        }
    

    参考大佬:https://segmentfault.com/a/1190000007462741

    参考大佬:https://blog.csdn.net/yinshuomail/article/details/81624648

  • 相关阅读:
    等宽布局和flex
    antd按需加载
    linux-redis cluster集群(redis5.x)
    linux-mysql-主从同步
    mysql-行转列
    Spring Bean 作用域
    ArrayList、LinkedList区别(jdk8)
    java类及实例初始化顺序
    线程池-结构
    GIT基础
  • 原文地址:https://www.cnblogs.com/tfxz/p/12621599.html
Copyright © 2011-2022 走看看