java判断ip是否为指定网段

devtools/2024/10/15 8:40:53/

前言

这是我在这个网站整理的笔记,有错误的地方请指出,关注我,接下来还会持续更新。

作者:神的孩子都在歌唱

一、IP地址介绍

1.1 IP(IPv4)

IP是Internet Protocol的缩写,即网际协议,它是计算机网络体系结构中的网络层协议。IPv4使用32位地址(IPv6为128位),通常采用点分十进制表示,例如:192.168.1.47。这个地址由两部分组成:网络位主机位

  • 网络位:用于标识设备所属的网络。
  • 主机位:用于标识该网络中的具体设备。

1.2 IP地址分类

传统的IPv4地址被分为A、B、C、D、E五类:

  • A类地址:用于大型网络,网络位为8位,主机位为24位。
    • 地址范围:1.0.0.0126.255.255.255
  • B类地址:用于中型网络,网络位为16位,主机位为16位。
    • 地址范围:128.0.0.0191.255.255.255
  • C类地址:用于小型网络,网络位为24位,主机位为8位。
    • 地址范围:192.0.0.0223.255.255.255
  • D类地址:用于组播。
  • E类地址:保留地址,未分配使用。

1.3 私有地址

某些地址被保留作为私有网络使用,无法在公网访问:

  • A类私有地址10.0.0.010.255.255.255
  • B类私有地址172.16.0.0172.31.255.255
  • C类私有地址192.168.0.0192.168.255.255

1.4 子网划分 & 子网掩码

子网掩码也是32位长,用于区分网络位和主机位。掩码网络位用1表示,主机位用0表示。

子网掩码的表示方式:

  • 点分十进制表示法:例如255.255.255.0
  • 位计数表示法:例如/24,表示网络位占24位。

作用
子网掩码的作用是确定一个IP地址的网络位长度,从而识别出IP所属的子网。

二. 判断IP是否在网段中(Java)

以下是一个用于判断给定IP是否属于指定网段的Java代码示例:

java">public static boolean ipIsInNet(String ip, String ipArea) {if ("127.0.0.1".equals(ip)) {return true;}if(StringUtils.isBlank(ipArea)){return false;}String[] ipArray = ipArea.split(",");for (String s : ipArray) {if (!s.contains("/")) {if (s.equals(ip)) {return true;}continue;}String[] ips = ip.split("\\.");int ipAddress = (Integer.parseInt(ips[0]) << 24)| (Integer.parseInt(ips[1]) << 16)| (Integer.parseInt(ips[2]) << 8) | Integer.parseInt(ips[3]);int type = Integer.parseInt(s.replaceAll(".*/", ""));int mask = 0xFFFFFFFF << (32 - type);String cidrIp = s.replaceAll("/.*", "");String[] cidrIps = cidrIp.split("\\.");int cidrIpAddr = (Integer.parseInt(cidrIps[0]) << 24)| (Integer.parseInt(cidrIps[1]) << 16)| (Integer.parseInt(cidrIps[2]) << 8)| Integer.parseInt(cidrIps[3]);if ((ipAddress & mask) == (cidrIpAddr & mask)) {return true;}}return false;
}

这个代码可以用来判断某个IP地址是否属于指定的IP网段。

参考文章:java判断ip是否为指定网段

作者:神的孩子都在歌唱

本人博客:https://blog.csdn.net/weixin_46654114

转载说明:务必注明来源,附带本人博客连


http://www.ppmy.cn/devtools/119557.html

相关文章

招联金融2025校招内推喇

【投递方式】 直接扫下方二维码&#xff0c;或点击内推官网https://wecruit.hotjob.cn/SU61025e262f9d247b98e0a2c2/mc/position/campus&#xff0c;使用内推码 igcefb 投递&#xff09; 【招聘岗位】 深圳&#xff0c;武汉&#xff1a; 后台开发 前端开发 数据开发 数据运营…

Sql Developer日期显示格式设置

默认时间格式显示 设置时间格式&#xff1a;工具->首选项->数据库->NLS->日期格式: DD-MON-RR 修改为: YYYY-MM-DD HH24:MI:SS 设置完格式显示&#xff1a;

大模型压缩方法之知识蒸馏

知识蒸馏的训练过程是通过结合硬标签损失&#xff08;( L_{\text{hard}} )&#xff09;和软标签损失&#xff08;( L_{\text{soft}} )&#xff09;进行反向传播&#xff0c;更新学生模型的参数。 具体流程如下&#xff1a; 前向传播&#xff1a; 教师模型 和 学生模型 分别对相…

css 边框流光效果

旋转流光 // html <div class"demo"><div class"demo-content">旋转流光</div> </div> ------------------------------------------------------ // 样式 body {background-color: black; }:root {--outer-radius: 0.5rem;--bor…

TS系列(7):知识点汇总

你好&#xff0c;我是沐爸&#xff0c;欢迎点赞、收藏、评论和关注。 一、TS是什么&#xff1f; TypeScript 由微软开发&#xff0c;是基于 JavaScript 的一个扩展语言。TypeScript 包含 JavaScript 的所有内容&#xff0c;是 JavaScript 的超集。TypeScript 增加了静态类型检…

PHP API 框架:构建高效API的利器【电商API接口】

在当今快速发展的互联网时代&#xff0c;API&#xff08;应用程序编程接口&#xff09;已成为连接不同应用程序和服务的关键。PHP&#xff0c;作为一种流行的服务器端脚本语言&#xff0c;提供了多种强大的框架来简化API的开发。本文将介绍PHP API框架的重要性&#xff0c;以及…

土体沉降计在沉降监测中起到什么作用

在土木工程和地质工程领域&#xff0c;对土体的沉降和变形进行精确监测是确保工程安全和质量的关键环节。而土体沉降计作为一种用于测量土体沉降和变形的仪器&#xff0c;在这一过程中发挥了重要的作用。本文将从土体沉降计的工作原理、优点及其在沉降监测中的具体应用等方面进…

8609 哈夫曼树

### 思路 1. **选择最小权值节点**&#xff1a;在哈夫曼树构建过程中&#xff0c;选择两个权值最小且父节点为0的节点。 2. **构建哈夫曼树**&#xff1a;根据权值构建哈夫曼树&#xff0c;确保左子树权值小于右子树权值。 3. **生成哈夫曼编码**&#xff1a;从叶子节点到根节点…