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日

相关文章

  • C语言每日练习之二叉堆

    C语言每日练习之二叉堆 什么是二叉堆? 二叉堆是一种特殊的二叉树,它满足两个特性: 堆的父节点的键值总是大于或等于(小于或等于)任何一个子节点的键值; 堆总是一棵完全二叉树。 实现二叉堆 数据结构 为了实现二叉堆,我们需要先定义数据结构。二叉堆常常使用数组来表示,数组中第一个元素一般为根节点,其余元素依次为树中其它节点的值。通过数组下标计算节点间的关系,可以…

    other 2023年6月27日
    00
  • c# TreeView添加右键快键菜单有两种方法

    当我们需要在c# WinForm的TreeView控件上添加右键快捷菜单时,一般有两种方法可以实现。下面详细介绍一下这两种方法: 方法一:使用ContextMenuStrip控件 在TreeView的MouseDown事件中,判断是否右击了鼠标,并添加一个ContextMenuStrip控件。代码如下: private void treeView1_Mous…

    other 2023年6月27日
    00
  • python单向循环链表原理与实现方法示例

    Python单向循环链表原理与实现方法示例 1. 什么是单向循环链表 单向循环链表是指链表的最后一个节点指向链表的第一个节点,形成一个环。单向循环链表可以实现数据的循环使用和遍历以及其他链表的基本操作。 2. 单向循环链表的实现方法 单向循环链表的实现方法是:有一个head指针指向链表的第一个节点,而链表的最后一个节点的next指针指向head,形成一个环。…

    other 2023年6月27日
    00
  • CSRF的攻击方式详解 黑客必备知识

    CSRF的攻击方式详解 CSRF(Cross-site request forgery)跨站请求伪造,也被称为:One Click Attack / Session Riding,缩写为 CSRF/XSRF。 CSRF攻击的核心是攻击者盗取了用户的身份信息,在用户不知情的情况下发送了恶意请求,通过这种方式来达到攻击的目的。 一、攻击过程 攻击者需要先构造一个…

    other 2023年6月27日
    00
  • win7采用指令界面修改运行环境变量的方法

    Win7采用指令界面修改运行环境变量的方法攻略 在Windows 7操作系统中,你可以使用指令界面(Command Prompt)来修改运行环境变量。下面是详细的攻略,包含两个示例说明。 步骤1:打开指令界面 首先,你需要打开指令界面(Command Prompt)。你可以按下Win键+R键,在弹出的运行窗口中输入\”cmd\”,然后点击\”确定\”按钮。这…

    other 2023年8月9日
    00
  • 解决父子组件通信的三种Vue插槽

    当然!下面是关于\”解决父子组件通信的三种Vue插槽\”的完整攻略,包含两个示例说明。 … … … … … … … … … … … … … … … … … … … … … … … … … … …

    other 2023年8月20日
    00
  • 【WPF】无边框窗体

    【WPF】无边框窗体 WPF是Windows Presentation Foundation的简称,是Microsoft公司提供的一项界面技术。使用WPF可以创建出非常漂亮的应用程序界面,而其中一个重要的功能就是无边框窗体。 无边框窗体可以让我们的应用程序看起来更加美观,而且可以自由的设计窗体的样式,比如说我们可以将窗体改成圆角的形状,或者是添加一张图片作为…

    其他 2023年3月28日
    00
  • Android自定义Adapter的ListView的思路及代码

    Android自定义Adapter的ListView的思路及代码攻略 在Android开发中,ListView是一种常用的控件,用于展示大量数据列表。为了自定义ListView的外观和行为,我们需要创建一个自定义的Adapter。下面是详细的攻略,包含了思路和代码示例。 思路 创建一个自定义的Adapter类,继承自BaseAdapter。 在Adapter…

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