2010-11-24 156 views
2

是否有无论如何确定一台Windows电脑是否使用本地实用程序,Python或PHP运行IPV6?如何检测Windows机器是否正在运行IPV4或IPV6?

+4

任何现代机器都有。 – 2010-11-24 16:28:00

+0

汉斯是绝对正确的。你暗示xor,但实际上它是包容性的。 – 2010-11-25 08:18:57

+0

“正在运行”与“正在使用连接...”不同。我宁愿使用某种IPv6探测器(也许是Google的IPv6地址)。许多机器都会配置IPv6地址,但底层网络基础设施不允许IPv6去任何地方(想想:你的家庭设备支持IPv6,但ISP设备不支持)。 – StanTastic 2016-10-26 08:46:19

回答

5

这就是我通过尝试打开IPv6套接字来解决问题的方法。如果系统没有发出错误,那么它正在使用IPv6。

import socket 

def isIPV6(): 
    ipv6 = True 
    try: 
     s = socket.socket(socket.AF_INET6, socket.SOCK_STREAM) 
    except: 
     ipv6 = False 
    return ipv6 
1

每台计算机都标配IPv4。 IPv6仅在特定机器上启用。但是如果你解析ifconfig/ipconfig,那么你应该在输出中找到自己的IPv4/6地址

3

当然。如果ipconfig包含真实接口的IPv6 Address条目,则可能是IPv6连接。在HKLM\SYSTEM\CurrentControlSet\services\TCPIP6也有有用的注册表项。

0

雅各布的方法是最简单的;您可以管理结果并进行匹配以查看网络适配器是否具有有效的IPv6地址。

此外,您可以通过获取Windows Management Instrumentation类Win32_NetworkAdapterConfiguration来获得此信息。 IPAddress属性是与网络适配器关联的所有IP地址的阵列,您可以对它们进行匹配以查看是否存在关联的IPv6地址。但是PS有些过火,我会用Jakob或Wyatt的答案,除非你需要做一些更易理解和想象的事情(发送HTTP请求;更改一些网络规则;重新启动服务)。

1

与其他人一样,列举接口并检查IPv6地址。替代方案包括尝试打开IPv6套接字或让Python拨打电话WSCEnumProtocols()

相关问题