python如何计算多个IP网段的可用地址数,图是我是写的代码,可是12行没有计算出可用地址。

Python019

python如何计算多个IP网段的可用地址数,图是我是写的代码,可是12行没有计算出可用地址。,第1张

你IP.txt 中的数据格式是什么样子的?

计算两个IP之间有多少个IP数,可以转化成int 相减呀。

IPy.IP(ip2).int() - IPy.IP(ip2).int() +1 就是ip2和ip1之间有多少个ip数量了。

最近在工作中需要对用户输入的ip进行重复性校验,之前处理的都是单ip,直接通过ip字符串比较即可。现在用户输入的是ip+掩码的方式,也就是支持ip范围输入,这样之前的校验方式就行不通了。

那么如何解决呢?我们都知道ip4是通过"点分十进制"来表示的,本质上就是一个二进制的整数,只需要将十进制的表示的IP转换为二进制整数,通过数值进行比较即可。

对于单ip而言,直接转换为整数,对于ip+掩码的形式(也就是ip范围)获取范围的开始值和结束值就可以确定其范围了。

这里介绍如下:

其中网路地址就是ip段的开始值,广播地址就是ip段的结束值.

喜欢点个赞!!!

你是要判断 两个 IP段 是否有重合吧?

每个IP段的 开始/结束 IP 各自转成整形:

struct.unpack("!L", socket.inet_aton('192.168.1.152'))[0]

然后就是比较 两个整型段 是否有重合