Java判断IP地址为内网IP还是公网IP的方法

Java判断IP地址为内网IP还是公网IP的方法

在Java中,可以使用以下方法来判断一个IP地址是内网IP还是公网IP。

方法一:使用正则表达式匹配

import java.util.regex.Pattern;

public class IPAddressChecker {
    public static boolean isPrivateIP(String ipAddress) {
        // 内网IP地址的正则表达式
        String privateIPPattern = \"(^10\\\\.)|(^172\\\\.1[6-9]\\\\.)|(^172\\\\.2[0-9]\\\\.)|(^172\\\\.3[0-1]\\\\.)|(^192\\\\.168\\\\.)\";

        // 使用正则表达式匹配IP地址
        Pattern pattern = Pattern.compile(privateIPPattern);
        return pattern.matcher(ipAddress).find();
    }

    public static void main(String[] args) {
        String ipAddress1 = \"192.168.0.1\";
        String ipAddress2 = \"123.45.67.89\";

        System.out.println(ipAddress1 + \" is private IP: \" + isPrivateIP(ipAddress1));
        System.out.println(ipAddress2 + \" is private IP: \" + isPrivateIP(ipAddress2));
    }
}

输出结果:

192.168.0.1 is private IP: true
123.45.67.89 is private IP: false

方法二:使用Java的InetAddress类

import java.net.InetAddress;
import java.net.UnknownHostException;

public class IPAddressChecker {
    public static boolean isPrivateIP(String ipAddress) {
        try {
            InetAddress inetAddress = InetAddress.getByName(ipAddress);
            return inetAddress.isSiteLocalAddress();
        } catch (UnknownHostException e) {
            e.printStackTrace();
            return false;
        }
    }

    public static void main(String[] args) {
        String ipAddress1 = \"192.168.0.1\";
        String ipAddress2 = \"123.45.67.89\";

        System.out.println(ipAddress1 + \" is private IP: \" + isPrivateIP(ipAddress1));
        System.out.println(ipAddress2 + \" is private IP: \" + isPrivateIP(ipAddress2));
    }
}

输出结果:

192.168.0.1 is private IP: true
123.45.67.89 is private IP: false

以上两种方法都可以判断一个IP地址是内网IP还是公网IP。方法一使用正则表达式匹配,方法二使用Java的InetAddress类。根据实际情况选择适合的方法即可。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java判断IP地址为内网IP还是公网IP的方法 - Python技术站

(0)
上一篇 2023年7月30日
下一篇 2023年7月30日

相关文章

  • redhatenterpriselinux8.0安装

    Red Hat Enterprise Linux 8.0 安装 Red Hat Enterprise Linux (RHEL) 是一款商业化的 Linux 操作系统。本文章将详细介绍 Red Hat Enterprise Linux 8.0 的安装步骤。 下载 Red Hat Enterprise Linux 8.0 首先,需要从 Red Hat 官网下载 …

    其他 2023年3月28日
    00
  • HQL常用的查询语句

    HQL常用的查询语句 HQL(Hibernate Query Language)是Hibernate框架中用于查询数据的一种语言,类似于SQL。在HQL中,查询语句是面向对象的,使用Java类名及属性名代替SQL中的表名和列名,能够方便地进行对象导航和属性过滤。在本文中,我们将介绍HQL中常用的查询语句。 1. from语句 from Entity from…

    其他 2023年3月28日
    00
  • C++ explicit关键字的使用详解

    那么让我们开始完整讲解“C++ explicit关键字的使用详解”。 什么是C++ explicit关键字? 在C++中,explicit是一个关键字,用于修饰构造函数。当我们使用一个带有参数的构造函数来创建一个对象时,编译器会隐式地进行类型转换,这种行为有时候会导致一些意想不到的问题。使用explicit关键字可以防止隐式类型转换。 使用示例1 下面是一个…

    other 2023年6月26日
    00
  • @Valid注解的作用及@Valid注解与@Validated的区别

    @Valid注解的作用及@Valid注解与@Validated的区别 @Valid注解的作用 @Valid注解是Java Bean Validation(JSR 380)规范中的一部分,用于在方法参数、方法返回值、字段和方法级别上进行数据校验。它的作用是告诉验证框架对被注解的目标进行校验。 当使用@Valid注解时,验证框架会自动根据目标对象的注解配置进行校…

    other 2023年7月28日
    00
  • VUE中的无限循环代码解析

    VUE中的无限循环代码解析攻略 在Vue中,无限循环是指一个循环依赖或递归调用的情况,导致代码陷入无限循环的状态。这种情况通常是由于数据的不正确使用或组件之间的错误依赖关系引起的。本攻略将详细讲解如何解析和解决Vue中的无限循环问题,并提供两个示例说明。 1. 识别无限循环 要识别Vue中的无限循环,可以遵循以下步骤: 检查控制台错误:在浏览器的开发者工具中…

    other 2023年7月29日
    00
  • 解决Win8 metro应用出现挂起状态无法再次安装问题

    问题描述: 当安装Windows 8 Metro应用程序时,有时程序可能会卡在挂起状态,在此期间,程序不能启动,也不能重新安装。这种情况可能会导致用户无法使用他们想要的软件,这是安装或应用程序的各种问题之一。解决这个问题需要删除这些挂起的应用程序,以便重新安装。 解决方法: 以下是完整的解决Win8 metro应用出现挂起状态无法再次安装问题的攻略: 结束挂…

    other 2023年6月27日
    00
  • Vue表单控件绑定图文详解

    Vue表单控件绑定图文详解 Vue是一个非常流行的Javascript框架,它提供了一种简单且灵活的方式来处理Web应用程序的数据绑定。在Vue中,表单数据绑定就是其中一个常见的数据绑定用例。 什么是Vue表单控件绑定? Vue表单控件绑定通常用于在Vue应用程序中收集表单数据。通过将表单的输入元素绑定到Vue实例的数据属性上,可以实现表单的双向绑定,从而使…

    other 2023年6月27日
    00
  • css实现垂直居中6种方法

    以下是详细讲解“CSS实现垂直居中6种方法”的完整攻略,过程中包含两个示例说明: CSS实现垂直居中6种方法 在Web开发中,垂直居中是一个常的需求。本攻略将介绍CSS实现垂直居中的6种方法,包括基本概念、使用方法和两个示例说明。 基本概念 在CSS中,垂直居中是指将一个元在垂直方向上居中对齐。实现垂直居中的方法有很多种,包括使用flex布局、使用table…

    other 2023年5月10日
    00
合作推广
合作推广
分享本页
返回顶部