【问题标题】:Fastest way to check IP address version检查 IP 地址版本的最快方法
【发布时间】:2016-03-03 02:21:30
【问题描述】:

我有大量字符串,我已经知道它包含一个 IP 地址,我想确定它是 IPv4 还是 IPv6。目前我正在检查字符串是否包含冒号:

version = 4
if ':' in ip_string:
    version = 6

鉴于我们已经知道它是一个 IP 地址,是否有更快的方法来确定 IP 版本。上述简单的检查是否有可能返回错误的结果(例如是否有可能有一个不带冒号的 IPv6 地址)?

【问题讨论】:

  • 你用的是什么版本的 Python?
  • IPv6 地址使用冒号 :,而不是分号 ;。 IPv6 地址的字符串表示形式将包含一个冒号。
  • @idjaw python 2.7,我还编辑了标签以添加它
  • 熟能生巧。 :)
  • @Vasilis 我不同意这一点。读这个。可能会导致某些事情或给您更多提示。 stackoverflow.com/a/3462840/1832539

标签: python python-2.7 ipv6 ipv4


【解决方案1】:

在 python 中使用 ipaddress 来检查版本。 下面是例子-

import ipaddress
#str1='10.10.10.2/24'
str1 = '2b11::327a:7b00/120'
[address, netmask] = str1.split('/')
ip_ver = ipaddress.ip_address(str(address))
if ip_ver.version == 4:
    print('IPv4')
else:
    print('IPv6')

输出:

IPv6

注意:在 Python 3.7.2 中测试

【讨论】:

    猜你喜欢
    • 2014-08-20
    • 2016-01-07
    • 1970-01-01
    • 2012-08-03
    • 2023-04-06
    • 1970-01-01
    • 2016-08-28
    • 2011-07-15
    • 1970-01-01
    相关资源
    最近更新 更多