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日

相关文章

  • fastjson使用TypeReference示例

    fastjson使用TypeReference示例的完整攻略 fastjson是一款高性能的Java JSON解析库,支持Java对象和JSON字符串之间的互相转换。在fastjson中,使用TypeReference可以解决泛型类型在序列化和反序列化时的问题。本文将详细介绍fastjson使用TypeReference的方法,并提供两个示例说明。 使用Ty…

    other 2023年5月5日
    00
  • 使用Python函数进行模块化的实现

    使用Python函数进行模块化的实现 模块化是一种将程序拆分为独立功能块的方法,使得代码更易于理解、维护和重用。Python函数是实现模块化的重要工具,可以将代码逻辑封装在函数中,并在需要的地方进行调用。下面是使用Python函数进行模块化的完整攻略。 1. 定义函数 首先,我们需要定义函数来封装代码逻辑。函数是一段可重用的代码块,可以接受输入参数并返回结果…

    other 2023年7月29日
    00
  • 【前端基础】动态脚本与JSONP

    【前端基础】动态脚本与JSONP 在前端开发中,动态脚本和JSONP是两个非常重要的概念,它们可以帮助我们更好地构建Web应用。本文将介绍这两个概念,以及如何在实际开发中使用它们。 动态脚本 动态脚本是指在客户端动态加载、执行的JavaScript脚本。在传统的静态页面中,所有的脚本都是在HTML中直接写出来的,但是当我们面对一些复杂的业务逻辑时,需要动态地…

    其他 2023年3月28日
    00
  • 图片加载进度实时显示

    一、概述 在网页中加载图片是很常见的场景,但一些大图片、网络延迟等因素都会导致图片加载时间延长。在用户等待图片加载时,为了提升用户体验,可以通过实时显示图片加载进度来让用户了解当前图片加载的进度,从而缓解用户的焦虑感和等待时间。本文将详细介绍如何实现图片加载进度实时显示的功能。 二、实现方式 实时显示图片加载进度的方式一般有两种,分别是:使用canvas绘制…

    other 2023年6月25日
    00
  • 物理内存和虚拟内存是什么意思各有什么作用

    物理内存和虚拟内存的作用 物理内存 物理内存是计算机中用于存储数据和程序的硬件设备,也被称为主存或随机存储器(RAM)。它是计算机中最快速的存储介质之一,用于存储正在运行的程序和数据。 物理内存的主要作用包括: 程序执行:物理内存存储了当前正在运行的程序的指令和数据。当程序被加载到物理内存中时,CPU可以直接访问这些指令和数据,从而加快程序的执行速度。 数据…

    other 2023年8月1日
    00
  • MyBatis 接收数据库中没有的字段的解决

    MyBatis是一种优秀的持久层框架,它可以很好地解决Java应用程序中与数据库打交道的操作,支持SQL编写和ORM框架两种开发方式。然而有时候我们会碰到数据库表中新增了字段,但对应的Java实体类没有相应更新的情况,那么我们该如何在MyBatis中处理这种情况呢?下面是针对这种情况的完整攻略。 解决方案 方案一:在查询语句中手动忽略掉没有的字段 我们可以在…

    other 2023年6月25日
    00
  • win7系统ip地址冲突怎么解决? Win7显示ip地址冲突的三种解决办法

    Win7系统IP地址冲突解决攻略 当在Windows 7系统中遇到IP地址冲突时,可以采取以下三种解决办法来解决问题。下面将详细介绍每种解决办法,并提供两个示例说明。 解决办法一:重新分配IP地址 打开控制面板:点击开始菜单,选择“控制面板”。 进入网络和共享中心:在控制面板中,点击“网络和 Internet”,然后点击“网络和共享中心”。 打开适配器设置:…

    other 2023年7月31日
    00
  • Python如何telnet到网络设备

    当需要通过python来管理网络设备时,可以使用telnet库来建立到设备的telnet连接。下面是Python如何telnet到网络设备的完整攻略: 1. 安装telnet库 首先需要安装Python的telnet库。如果你使用的是Python 2.x版本,那么telnet库已经默认安装。如果你使用的是Python 3.x版本,可以使用下面的pip命令来安…

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