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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM