- - PR -
自IPアドレスの取得方法
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-10-16 10:38
お世話になっております。
VB2005を用いて、アプリケーションが動作しているコンピュータ自身の IPアドレスを取得しようとしております。 DNSクラスを用いて、下記のコードでstrMyIPAddressにIPアドレスを格納 するようにしました。 Dim strHostName As String = Dns.GetHostName() strMyIPAddress = Dns.GetHostEntry(strHostName).AddressList(0).ToString しかしながら、いくつかのコンピュータでテストをしたところ1台のみ、 期待のIPアドレスを取得できません。 結果としては、"::1"という文字列が取得されてしまいます。 該当のコンピュータでのping結果は "ping test02-pc"の場合(設定しているコンピュータ名) Pinging test02-pc [::1] with 32 bytes of data: Reply from ::1: time<1ms (以下略) "ping localhost"の場合 Pinging test02-pc [::1] with 32 bytes of data: Reply from ::1: time<1ms (以下略) "ping 192.168.10.12"の場合(割り振っているIPアドレス) Pinging 192.168.10.12 with 32 bytes of data: Reply from 192.168.10.12: bytes=32 time<1ms TTL=128 (以下略) "ping 127.0.0.1"の場合 Pinging 127.0.0.1 with 32 bytes of data: Reply from 127.0.0.1: bytes=32 time<1ms TTL=128 (以下略) となります。 該当のコンピュータは、「DELL PRECISION 690」「WindowsXP Pro.(SP2)」で、 期待しているIPアドレスは"192.168.10.12"です。 プログラムの問題か、コンピュータの問題か、解決方法をご指導ください。 | ||||||||
|
投稿日時: 2006-10-16 11:04
"ping test02-pc"の結果
Reply from ::1: time<1ms となってプログラムの結果と一致しています コンピュータ側の問題が濃厚です。 プログラム側のstrHostNameの値をみてはいかがでしょうか? test02-pcとなっているはずです | ||||||||
|
投稿日時: 2006-10-16 11:37
ご返信を戴きまして有難う御座います。
99riさんの書き込み (2006-10-16 11:04) より: > プログラム側のstrHostNameの値をみてはいかがでしょうか? > test02-pcとなっているはずです ご指摘の通り、"test02-pc"となっておりました。 コンピュータ側の問題ということですが、考えられ事例はありますでしょうか? マイクロソフト社のウェブサイトで"ping ::1"を検索したところ、IPv6というの が関係しているようなのですが、このあたりの情報には疎いので、解決策にまで 行き着けません。 試しに、ローカルエリア接続のプロパティから「TCP/IP version6」チェックを 外してみましたが、症状は変わりませんでした。 どうしたら、"::1"ではなく"192.168.10.12"を取得できるようになるか、設定面 でも、プログラム面でも構いませんので、ご教授ください。 | ||||||||
|
投稿日時: 2006-10-16 11:50
外した状態でipconfig -allをやって結果は表示されなくなってるの? なってなかったら結局まだiPv6が生きたまま。 再起動してみたらどうなります? _________________ Inspired Ambitious ISMS Assistant Auditor | ||||||||
|
投稿日時: 2006-10-16 11:51
複数のネットワークインターフェースを持っている端末の場合どうするんだろう。。。 AddressList の中身を確認してみてはどうでしょうか | ||||||||
|
投稿日時: 2006-10-16 12:14
"192.168.10.12"は従来のIPアドレス体系でIPv6ではこのような体系ではありません
もしIPv6を使用しているならば プログラム的にはIPv6に対応しているメソッドでIPアドレスを取得する必要があります [ メッセージ編集済み 編集者: 99ri 編集日時 2006-10-16 12:16 ] | ||||||||
|
投稿日時: 2006-10-16 12:45
皆様、ご返信有難う御座います。
> NAOさん "ipconfig -all"では、IPv6アドレスは無くなっておりました。 念のために再起動しましたが、結果は変わりません。 このチェックだけでは、駄目のようです。 > かるあさん AddressListのすべて吐き出させてたところ、リストの2つ目に目的のアドレスがありました。 また、LANカードを追加したところ、"::1"、"192.168.10.13"、"192.168.10.12"となりました。 IPv4アドレスを取得するために、リストからIPv4の正規表現をチェックすることにします。 また、仕様としては、NIC2枚以上の場合、最も若いIPv4アドレスを使用することとします。 有難う御座いました。 > 99riさん プログラム的にはIPv4のネットワークを想定しているため、IPv6が取得できることが問題でした。 将来的にIPv6のネットワークを想定する場合には、挑戦してみようと思います。 以上、ご指導、有難う御座いました。 | ||||||||
|
投稿日時: 2006-10-16 16:45
IPAddress クラスにどのアドレス形式かを示すプロパティとかあったような。 |