当前位置: 首页 > 面试题库 >

验证IP地址(带掩码)

戚同
2023-03-14
问题内容

我有IP地址和掩码,例如10.1.1.1/32。我想检查是否10.1.1.1在该范围内。是否存在可以执行此操作的库或实用程序,或者我需要自己写点东西?


问题答案:

首先,您需要将IP地址转换为flat int,这将更易于使用:

String       s = "10.1.1.99";
Inet4Address a = (Inet4Address) InetAddress.getByName(s);
byte[]       b = a.getAddress();
int          i = ((b[0] & 0xFF) << 24) |
                 ((b[1] & 0xFF) << 16) |
                 ((b[2] & 0xFF) << 8)  |
                 ((b[3] & 0xFF) << 0);

一旦您的IP地址为ints,就可以执行一些算法来执行检查:

int subnet = 0x0A010100;   // 10.1.1.0/24
int bits   = 24;
int ip     = 0x0A010199;   // 10.1.1.99

// Create bitmask to clear out irrelevant bits. For 10.1.1.0/24 this is
// 0xFFFFFF00 -- the first 24 bits are 1's, the last 8 are 0's.
//
//     -1        == 0xFFFFFFFF
//     32 - bits == 8
//     -1 << 8   == 0xFFFFFF00
mask = -1 << (32 - bits)

if ((subnet & mask) == (ip & mask)) {
    // IP address is in the subnet.
}


 类似资料:
  • 本文向大家介绍在Python中验证IP地址,包括了在Python中验证IP地址的使用技巧和注意事项,需要的朋友参考一下 假设我们有一个字符串;我们必须检查给定的输入是否是有效的IPv4地址或IPv6地址,或者都不是。 IPv4地址以点分十进制表示法规范表示,点分十进制表示法由四个十进制数字组成,每个数字范围为0到255,并用点号(“。”)分隔,例如192.168.254.1;此外,IPv4地址中的

  • 问题内容: 验证用户输入的IP有效的最佳方法是什么?它以字符串形式出现。 问题答案: 不要解析它。只是问问。

  • 它工作得很好,但是当我给出这样的值时,它也返回true..这怎么解决?

  • 本文向大家介绍Shell脚本获取本地网卡IP、mac地址、子网掩码、dns IP、外网IP,包括了Shell脚本获取本地网卡IP、mac地址、子网掩码、dns IP、外网IP的使用技巧和注意事项,需要的朋友参考一下

  • 我正在使用ssl连接从flask应用程序连接到远程mysql数据库(在我的本地网络上)。 任何对数据库的调用都会抛出这个神秘的错误。 我可以从终端登录mysql监视器。 我使用的是macos 11.0。1和python 3.9。0.我已尝试按此处所述安装和链接。没有ssl,一切正常。请帮忙。 编辑:这个问题不是macos特有的,我试着从ubuntu连接,结果也是一样的。

  • 本文向大家介绍winform C#获得Mac地址,IP地址,子网掩码,默认网关的实例,包括了winform C#获得Mac地址,IP地址,子网掩码,默认网关的实例的使用技巧和注意事项,需要的朋友参考一下 1.  添加程序集 2.  引入命名空间 using System.Management; 3.  方法 以上这篇winform C#获得Mac地址,IP地址,子网掩码,默认网关的实例就是小编分享