.NET TIPS ローカル・コンピュータのIPアドレスを取得するには?[C#、VB]デジタルアドバンテージ 一色 政彦2008/08/21 |
![]() |
ローカル・コンピュータのIPアドレス(文字列)を取得する方法は、.NET Framework 2.0以降と1.xで処理が異なる。本TIPSではそれぞれについて説明する。
IPアドレスを取得する方法(.NET Framework 2.0以降)
IPアドレスを取得するには、Dnsクラス(System.Net名前空間)の静的メソッドGetHostAddressesを使う(※「TIPS:IPアドレス←→ホスト名を変換するには?」のように静的メソッドGetHostEntryを使ってもよい)。Dns.GetHostAddressesメソッドは、引数としてホスト名を取り、戻り値としてIPAddressクラス(System.Net名前空間)の配列オブジェクトを返す。
引数として指定するローカル・コンピュータのホスト名は、「TIPS:プログラムを実行しているマシンのホスト名を得るには?」で説明されているように、Dnsクラスの静的メソッドGetHostNameを使えばよい。Dns.GetHostNameメソッドは、引数なしで、戻り値としてホスト名を返す。
そして実際にIPアドレスの文字列を取得するには、Dns.GetHostAddressesメソッドで得た配列に含まれる1つのIPAddressオブジェクトを文字列化(=ToStringメソッドの呼び出し)すればよい。ここで得られる文字列は、インターネット上の標準表記で、IPv4の場合はピリオド区切りの10進表記、IPv6の場合はコロン区切りの16進表記となる。
なお、メソッドの戻り値がIPAddressオブジェクトの配列になっているのは、1つのコンピュータで複数のIPアドレスを持つこともできるからである。しかし通常のクライアント・コンピュータではそのような状況はほとんどないだろう。
次のコードは、以上の内容を実装したコンソール・アプリケーションのサンプル・プログラムだ。
|
||
| IPアドレスを取得するサンプル・コード(.NET Framework 2.0以降)(上:C#、下:VB) |
上記のコードは同期処理(=メソッドの処理が完了するまで制御が戻らないため、ほかの操作ができない)になっているので、ネットワークが遅かったりすると、アプリケーション全体の動作が停止してしまう。それを避けるために、非同期で同様の処理を実現するには、Dns.BeginGetHostAddressesメソッドとDns.EndGetHostAddressesメソッドを使えばよい。これらのメソッドを使った方法は本稿では割愛するが、詳しい利用方法については、MSDNの情報を参照してほしい。
IPアドレスを取得する方法(.NET Framework 1.x)
.NET Framework 1.xでも、基本的な処理は.NET Framework 2.0以降の場合と変わらない。しかし、Dns.GetHostAddressesメソッドが2.0以降にしか搭載されていないので、代わりにDnsクラスの静的メソッドGetHostByNameを使う必要がある(※逆に2.0ではこのメソッドはobsoletedになっているので使えない)。
Dns.GetHostByNameメソッドは、引数としてホスト名を取り、戻り値としてIPHostEntryクラス(System.Net名前空間)のオブジェクトを返す。
引数として指定するホスト名を取得するには(.NET Framework 2.0と同じく)Dns.GetHostNameメソッドを使えばよい。
戻り値として得たIPHostEntryオブジェクトのAddressListプロパティからIPAddressオブジェクトの配列が取得できる。従って、あとは(.NET Framework 2.0の場合と同じように)配列に含まれる1つのIPAddressオブジェクトからIPアドレスの文字列を取得すればよい。
次のコードは、以上の手順で実装したIPアドレスを取得するサンプル・プログラムである。
|
||
| IPアドレスを取得するサンプル・コード(.NET Framework 1.x以降)(上:C#、下:VB) |
.NET Framework 1.xのコードも同期処理である。非同期に処理するには、Dns.BeginGetHostByNameメソッドとDns.EndGetHostByNameメソッドを使えばよい。これらのメソッドを使った方法は本稿では割愛する。詳しい利用方法については、MSDNの情報を参照してほしい。![]()
| カテゴリ:クラス・ライブラリ 処理対象:ネットワーク 使用ライブラリ:Dnsクラス(System.Net名前空間) 使用ライブラリ:IPAddressクラス(System.Net名前空間) 使用ライブラリ:IPHostEntryクラス(System.Net名前空間) |
|
||||||||||||||||||||||||||||
| 「.NET TIPS」 |
TechTargetジャパン
- 新人プログラマーのためのInsider.NETの歩き方 2012 (2012/5/22)
晴れて.NETプログラマーとなる新人が効率的に開発技術を習得するには? 大量にある記事群の中から新人が読むべきお勧めを厳選して紹介 - jQuery MobileでJavaScriptプログラミング (2012/5/17)
jQuery Mobileは手軽なだけでなく、JavaScriptのAPIも充実しており、独自機能の実装もできる。今回は「グローバル設定」と「イベント」を解説 - Windows上で開発するための開発環境構築入門 (2012/5/16)
Windowsを使ってチームで開発している? なのにサーバOSを設定・運用した経験がない? そうなら、今すぐ学ぼう - 「コントラクト」でアプリのサンドボックスを乗り越える! (2012/5/11)
Metroスタイル・アプリはサンドボックスの中で動作する。それを乗り越えてほかのアプリと連携する仕組み「コントラクト」を解説
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -


