在ip地址范围内查找ip地址的速度



可能重复:
python和ip范围
如何获取IP地址列表?

我在文本文件中有很多ip范围:

1.0.0.0 - 1.0.0.255
....
223.255.254.0 - 223.255.254.255

如何快速查找ip地址范围?

您可以使用内置套接字将点式ip地址转换为整数
http://code.activestate.com/recipes/66517-ip-address-conversion-functions-with-the-builtin-s/

然后做一个测试,看看你的ip地址是否介于两个整数之间:

a = dottedQuadToNum(ipfrom)
b = dottedQuadToNum(ipto)
mine = dottedQuadToNum(MyIP)

您可以测试mine是否位于ab之间。

如果IP已排序,则可以对IP执行二进制搜索。因此它将是O(logN(,其中N是列表中IP的数量。

Python iptools似乎是一个很好的工具:

它提供如下对象:

  • IpRange:提供in和迭代的ip地址范围
  • IpRangeList:提供in和迭代的IpRange对象的列表

最新更新