2010-11-24 11 views
2

Windowsコンピュータがネイティブユーティリティ、Python、またはPHPを使用してIPV6を実行しているかどうかを判断する方法はありますか?WindowsマシンがIPV4またはIPV6を実行しているかどうかを検出するにはどうすればよいですか?

+4

最新のマシンには、両方があります。 –

+0

ハンスは絶対に正しいです。あなたはxorを暗示していますが、実際は包括的です。 –

+0

「実行中」は「接続を使用しています...」とは異なります。むしろ、ある種のIPv6プローブ(Google IPv6アドレス、おそらく?)を使用したいと思う。かなり多くのマシンがIPv6アドレスを設定しますが、基盤となるネットワークインフラストラクチャではIPv6はどこにも置かれません(あなたのホームギアはIPv6をサポートしていますが、ISPギアはありません)。 – StanTastic

答えて

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アドレスがあるはずです。

+0

間違っていると、IPv6は通常、デフォルトで有効になっており、コンピュータがルーティング可能なIPv6アドレスを取得できる場合に優先されます。 – StanTastic

+3

@StanTasticこの回答は6年前のことです。内容が非常に異なる場合 –

3

確かです。 ipconfigに実際のインターフェイスのIPv6 Addressエントリが含まれていると、おそらくIPv6接続が確立されているはずです。有用なレジストリエントリはHKLM\SYSTEM\CurrentControlSet\services\TCPIP6です。

0

ヤコブのアプローチは最も簡単です。結果をパイプし、ネットワークアダプタが有効なIPv6アドレスを持っているかどうかを確認することができます。

また、Windows Management InstrumentationクラスWin32_NetworkAdapterConfigurationを取得することでこれを取得できます。プロパティIPAddressは、ネットワークアダプタに関連付けられているすべてのIPアドレスの配列で、一致してIPv6のアドレスが関連付けられているかどうかを確認できます。しかし、PSはちょっとした過剰ですが、わかりやすく気の利いたもの(HTTP要求を送信する、ネットワークルールを変更する、サービスを再開する)が必要な場合を除いて、JakobまたはWyattの答えに行くでしょう。

1

他の誰もが述べたように、インターフェイスを列挙してIPv6アドレスを確認します。代わりにIPv6ソケットを開くか、Pythonに電話をかけることが含まれますWSCEnumProtocols()

+0

IPV6ソケットを開こうとすると、そのコードの答えを見てください。 – CLJ

関連する問題