如何快速查找IP地址范围内的IP地址?

时间:2011-12-01 09:30:31

标签: python

  

可能重复:
  python and ip range?
  How to get list of IP addresses?

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

1.0.0.0 - 1.0.0.255
....
223.255.254.0 - 223.255.254.255

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

3 个答案:

答案 0 :(得分:1)

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

然后进行测试,看看你的ip-address是否介于两个整数之间:

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

您可以进行测试,看看mine是否介于ab之间。

答案 1 :(得分:0)

如果IP已排序,您可以在IP上执行二进制搜索。所以它将是O(logN),其中N是列表中IP的数量。

答案 2 :(得分:0)

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

它提供了以下对象:

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