Как определить, работает ли на компьютере Windows IPV4 или IPV6? - PullRequest
3 голосов
/ 24 ноября 2010

Можно ли в любом случае определить, работает ли на компьютере Windows IPV6 с использованием собственных утилит, python или php?

Ответы [ 5 ]

5 голосов
/ 29 ноября 2010

Вот как я решил проблему, пытаясь открыть сокет IPv6. Если система не выдавала ошибку, она использует IPv6.

import socket

def isIPV6():   
    ipv6 = True
    try:
        s = socket.socket(socket.AF_INET6, socket.SOCK_STREAM)
    except:
        ipv6 = False
    return ipv6
3 голосов
/ 24 ноября 2010

Конечно. Если ipconfig содержит запись IPv6 Address для реального интерфейса, возможно, у вас есть подключение к IPv6. Есть также полезные записи реестра в HKLM\SYSTEM\CurrentControlSet\services\TCPIP6.

1 голос
/ 26 ноября 2010

Перечислите интерфейсы и проверьте IPv6-адрес, как и все остальные.Альтернативы включают в себя попытку открыть сокет IPv6 или заставить Python вызвать WSCEnumProtocols()

1 голос
/ 24 ноября 2010

Каждый компьютер поставляется с IPv4 по стандарту. IPv6 включен только на определенных машинах. Но если вы анализируете ifconfig / ipconfig, вы должны найти IPv4 / 6-адрес в выводе

0 голосов
/ 24 ноября 2010

Подход Якоба является самым простым; Вы можете передать результат и выполнить сопоставление, чтобы увидеть, имеет ли сетевой адаптер действительный адрес IPv6.

Кроме того, вы можете получить это, выбрав класс инструментария управления Windows Win32_NetworkAdapterConfiguration . Свойство IPAddress представляет собой массив всех IP-адресов, связанных с сетевым адаптером, и вы можете сопоставить их, чтобы увидеть, связан ли адрес IPv6. Но PS - это немного излишне, я бы согласился с ответом Якоба или Уайетта, если вам не нужно делать что-то более понятное и причудливое (отправить HTTP-запрос; изменить некоторые сетевые правила; перезапустить службу).

...