【发布时间】:2012-08-07 08:37:01
【问题描述】:
作为验证的一部分,我需要这样做,我有 IPv4 的解决方案。 但由于 IPv6 可以有多种格式,我无法找到确切的解决方案。 有什么建议吗?
【问题讨论】:
-
欢迎来到 Stack Overflow!我们鼓励您research your questions。如果您有 tried something already,请将其添加到问题中 - 如果没有,请先研究并尝试您的问题,然后再回来。
作为验证的一部分,我需要这样做,我有 IPv4 的解决方案。 但由于 IPv6 可以有多种格式,我无法找到确切的解决方案。 有什么建议吗?
【问题讨论】:
有很多方法可以解决您的问题。您可以从类似任务的解决方案开始:
这个想法是使用 Python 中的 socket 模块:
socket.inet_pton(socket.AF_INET6, address)
【讨论】:
从 Python 3.3 开始,可以使用
import ipaddress
ipaddress.ip_address(ip) in ipaddress.IPv6Network(network)
例如,
import ipaddress
ip = "2001:db8:85a3::8a2e:370:7334"
network = "2001:db8:85a3::/64"
test = ipaddress.ip_address(ip) in ipaddress.IPv6Network(network)
print(test) # True
编辑: 您也可以使用以下同时支持 IPv4 和 IPv6 的函数
ipaddress.ip_network(addr)
【讨论】:
查看IPy。在 Python 中处理 IP 地址和子网时,它非常有用。
【讨论】: