PCのIPアドレス取得がうまくいきません。

解決


IPA  2009-03-04 15:10:08  No: 141620

使用するPCごとの管理を行うため、PCのIPアドレスを取得したいのですが、
使用しているVBのバージョンは2008なので、以下のサイトに以下のように書けばよいとありましたが、
参考サイト:
http://www.atmarkit.co.jp/fdotnet/dotnettips/778getmyipaddress/getmyipaddress.html

コード
    ' ホスト名を取得する
    Dim hostname As String = Dns.GetHostName()

    ' ホスト名からIPアドレスを取得する
    Dim adrList As IPAddress() = Dns.GetHostAddresses(hostname)
    For Each address As IPAddress In adrList
      Console.WriteLine(address.ToString())
    Next

これを自分のPC(vista)で行うと、結果が以下のようになっていました。

fe80::(以下略)
2001:(以下略)
2001:(以下略)
fe80::(以下略)
2001:(以下略)
2001:(以下略)
192.168.0.2
192.168.0.3

最初の6つは、全くもって意味不明です。
また、最後の2つが必要なIPアドレスになるのですが、どうして2つもあるのかが不明です。
(もしかしたらワイヤレスとLANケーブルでIPアドレスが振られているからかもしれませんが。)
どうやれば、xxx.xxx.xxx.xxx形式のIPアドレスが取得できるでしょうか?
ご回答よろしくお願いします。


YuO  2009-03-05 01:44:28  No: 141621

AddressFamilyプロパティの値をしらべましたか?
最初の6つがおそらくIPv6,残り2つがiPv4なのでしょう。

IPv4アドレスのみが欲しいのであれば,IPv4の時のみ取り出せばよいです。
たぶん,下のような感じでいけると思います (未確認)。
For Each address In From addr In Dns.GetHostAddresses(hostname) Where addr.AddressFamily = AddressFamily.InterNetwork Select Addr
    Console.WriteLine(address.ToString())
Next


IPA  2009-03-05 05:30:24  No: 141622

YuOさん、ご回答有難うございました。
以下の方法でうまくいきました。
    For Each address In From addr In Dns.GetHostAddresses(hostname) Where addr.AddressFamily = System.Net.Sockets.AddressFamily.InterNetwork Select addr
        Console.WriteLine(address.ToString())
    Next


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加