首页 > 编程语言 >JAVA获取本地的所有网卡IP地址列表

JAVA获取本地的所有网卡IP地址列表

时间:2024-09-06 20:35:35浏览次数:10  
标签:JAVA String IP IP地址 networkInterface 网卡 static ip

 

 

 private static final String NETMASK = "(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)";

    private static final Pattern IP_PATTERN = Pattern.compile("^(?:" + NETMASK + "\\.){3}" + NETMASK + "$");


    public static final String LOCAL_IP = "127.0.0.1";

/**
     * 获取本机的所有网卡IP列表  不包含127.0.0.1
     * @return 本机网卡的IP列表
     */
    public static List<String> getServerIpList() {
        List<String> serverIpList = new ArrayList<>();
        try {
            // 获取所有网络接口(网卡)
            Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();
            // 遍历每个网络接口
            for (NetworkInterface networkInterface : Collections.list(interfaces)) {
                // 跳过回环接口和未激活的接口
                if (networkInterface.isLoopback() || !networkInterface.isUp()) {
                    continue;
                }
                // 获取每个网络接口的 IP 地址
                Enumeration<InetAddress> inetAddresses = networkInterface.getInetAddresses();
                for (InetAddress inetAddress : Collections.list(inetAddresses)) {
                    // 过滤掉IPv6地址(如果你只想要IPv4地址)
                    if (inetAddress instanceof java.net.Inet4Address) {
                        String ip = inetAddress.getHostAddress();
                        if (!LOCAL_IP.equals(ip) && isIPv4Valid(ip)) {
                            serverIpList.add(inetAddress.getHostAddress());
                        }
                    }
                }
            }
        } catch (SocketException e) {
            throw new RuntimeException("获取服务器网卡IP异常", e);
        }
        return serverIpList;
    }


    public static boolean isIPv4Valid(String ip) {
        return IP_PATTERN.matcher(ip).matches();
    }

 

标签:JAVA,String,IP,IP地址,networkInterface,网卡,static,ip
From: https://www.cnblogs.com/pxblog/p/18400960

相关文章

  • Java中的Stream流
    一、案例引入案例需求:创建一个集合,存储多个姓名字符串元素;把集合中所有以“张”开头的元素存储到一个新的集合;把上述集合中长度为3的元素存储到一个新的集合;遍历后打印上一步得到的集合传统方法:publicclassStreamDemo{publicstaticvoidmain(String[]args){......
  • 05JAVA第一次测试编程题整理
    02控制语句引用对象要自己初始化classHotel{intprice;intcom;}intn=sc.nextInt();for(inti=1;i<=n;i++){if(h[i]==null){h[i]=newHotel();}/*Hotel[......
  • Java-单向链表实现
    什么是链表?        链表是一种常见的数据结构,用于存储一系列元素。与数组不同,链表中的元素(节点)在内存中不必是连续的。每个节点包含数据部分和指向下一个节点的引用(指针)。链表的主要优点是插入和删除操作的时间复杂度为O(1),但访问特定元素的时间复杂度为O(n)。头节点......
  • java集合基础练习题
    List集合.ArrayList,LinkedList,Vector三者的相同点与不同点?(“Vector”可百度)【面试题】共同点:他们都实现了List接口,意味着他们具有相同的基本操作,如添加、删除、获取元素有序性和可重复性,他们都是有序的,即插入顺序和迭代顺序相同,都允许存储重复的元素都可以动态调整大......
  • Spire.Office for Java 9.8.0 FIX
    独立Java库用于处理Office、PDF和条形码Spire.OfficeforJava是E-iceblue提供的企业级OfficeJavaAPI的组合,包括Spire.DocforJava、Spire.XLSforJava、Spire.PresentationforJava、Spire.PDFforJava和Spire.BarcodeforJava。开发人员可以使用Spire.Off......
  • JavaScript学习文档(14):深入对象、内置构造函数、综合案例
    目录一、深入对象1、创建对象三种方式2、构造函数(1)构造函数(2)说明:(3)利用构造函数创建多个对象(4)实例化执行过程3、实例成员和静态成员(1)实例成员:(2)静态成员:二、内置构造函数1、Object2、Array(1)数组常见实例方法-核心方法(2)员工涨薪计算成本案例(3)还有些数组常见方法(4......
  • 基于Java的旅游景区网站系统设计与实现
    演示地址前台地址:http://travel.gitapp.cn后台地址:http://travel.gitapp.cn/admin后台管理帐号:用户名:admin123密码:admin123功能介绍平台采用B/S结构,后端采用主流的Springboot框架进行开发,前端采用主流的Vue.js进行开发。整个平台包括前台和后台两个部分。前台功......
  • javascript网页设计案例
    JavaScript在网页设计中扮演着重要的角色,能够实现动态效果和交互功能,提升用户体验。下面,我将通过一个具体的案例——“动态图片轮播”来展示JavaScript在网页设计中的应用。案例:动态图片轮播1.HTML结构<!DOCTYPEhtml><htmllang="zh"><head>  <metacharset="UTF-......
  • 【Linux】CentOS 7 网卡突然启动不了的解决办法
    最近在了解Hadoop,但是在虚拟机关机之后,重新启动,网卡就不见了。 具体情况是这样的:1.用ifconfig查看,发现网卡不见了。2.用ifconfig-a查看,发现ens33网卡是在的,只是状态是down的。3.临时的解决方法:使用ifconfig命令,直接启动ens33网卡[root@centos7~]#ifconfigens33up然后,临时配置......
  • JMC揭秘:如何精准监控Java应用性能
    对于我们常用的HotSpot来说,有更强大的工具,那就是JMC。JMC集成了一个非常好用的功能:JFR(JavaFlightRecorder)。FlightRecorder源自飞机的黑盒子,是用来录制信息然后事后分析的。在Java11中,它可以通过jcmd命令进行录制,主要包括configure、check、start、dump、stop......