【VB.Net】ipアドレスを取得する方法

どうも!リョクちゃです。

今回は、自身のipアドレスをアプリケーションで取得する方法を紹介します。

意外と知っていそうで知らないということで今回ipアドレスをテーマにしました。

ちなみに前回はこちら、

文字列で表した数値に対して、左もしくは右側にゼロ(0)で埋めたいときがあったりはしませんか?そんなときに使える方法を紹介しています。ゼロで埋めることを、ゼロパディングといいます。意外と知っておくことでいざとなった時の助けになればと思っています。



ipアドレスとは

パソコンなどのネットワークに接続する端末がネットワークに接続する際に利用されます

簡単にいうと、インターネット上の住所といった位置づけになります。

ipアドレスには2種類あり、それぞれ

  • IPv4
  • IPv6

があります。

一般的には、IPv4がなじみ深いと思います。

昨今のネットワーク機器の普及を見ると、IPv4は既に全世界へ割り振り済みとされており、

将来的にはIPv6に置き換わっていくことが予測されます。

→ この問題・現象をIP枯渇問題といい、注目の問題でもあります。

それぞれで違うのは、組み合わせの数になります。

IPv4では、約43億個

IPv6では、約340×10^36個(澗個:かんこ)

IPv6は実質無限に近いIPが利用可能なんです。

また、形式にも違いがあり、

IPv4では、「177.17.255.1」

IPv6では、「dd11:15:12ab:1:22c:9bff:fe2b:b5d7」

といった形式で私たちには見えます。

IPv4は、32bitを8bitずつ”.”(ドット)で4分割し、分割した数を10進数で表示しています。

IPv6は、128bitを16bitずつ”:”(コロン)で8分割し、分割した数を16進数で表示しています。

準備編:フォームの作成

では、実際にipアドレスを取得していく方法を紹介していきます。

まずは準備として下のようなフォームを作成します。

ちなみに筆者の環境は、

  • VisualStudio2019
  • Windows 10 64bit
  • .Net Framework 4.5.2

です。



スポンサーリンク




アプリケーションの目的

今回作成するフォームアプリケーションの目的を下に示します。

ボタンを押したら、自身のマシンのIPv4とIPv6を取得し、各ラベルに表示する。

といった事を目的とします。

IPv4の取得

IPv4を取得するには、以下の手順で行います。

  1. ホスト名を取得する
  2. 取得したホスト名からIPアドレスを取得する(※配列で取得)
  3. IPアドレスから自身のIPv4を抽出する

といった流れで行っていきます。

ホスト名を取得する

ホスト名を取得するには、

System.Net.Dns.GetHostName()

を使います。

これを使うと、自身のマシンのデバイス名が取得されます

取得したホスト名からIPアドレスを取得する

次に取得したホスト名からIPアドレスを取得します。

System.Net.Dns.GetHostAddresses(“取得したホスト名”)

と書くことで、ホスト名に紐づくIPアドレスの一覧が取得できます

ここでは複数のIPアドレスが取得されるので注意してください

IPアドレスから自身のIPv4を抽出する

取得したIPアドレスの一覧からIPv4を抽出していきます。

マシンによっては複数のIPv4があるかと思います。

今回はIPアドレス一覧の最後の値を抽出します。

以上を踏まえてコードに書くと下のようになります。

今回は出力結果については表示はしませんので、各自で確認をしてみてください

IPv6を取得する

IPv6を取得するには、既にIPv4でコードを実行された方はわかるかもしれませんが、

実は既にIPv6も取得ができています……。

ですので、IPアドレスの一覧からIPv6を抽出するだけになります。

今回は、一番最初の値を抽出しましょう。

先ほどのコードに追記していきます。

これでIPv4とIPv6を取得することができました。

最後にラベルに表示をするようにコードを直しましょう。

実行して、下のような画面が表示されればクリアです。

※ IP部分については非表示にしています。

IPv4とIPv6を区別して取得したい場合

一方で、それぞれを区別して取得したい場合があるかもしれません。

そんな時は、条件分岐を使ってわけてあげます。

その際の分ける方法としては、

IPv4

System.Net.Sockets.AddressFamily.InterNetwork

IPv6

System.Net.Sockets.AddressFamily.InterNetworkV6

をそれぞれ使ってどちらかの判定をしてあげます。

先ほどのコードを修正したのが下のコードになります。

それぞれ分けた後にリスト変数に追加していっています。

まとめ

以上、今回は自身のマシンのIPアドレスを取得する方法を例を交えて解説していきました。

意外と知っているようで知らないIPアドレスの取得方法。

イメージだけでもつかんでいただけたらなと思います。

IPアドレスを取得するには、

① ホスト名を取得する

System.Net.Dns.GetHostName()

② ①からIPアドレスの一覧を取得する

System.Net.Dns.GetHostAddresses(“取得したホスト名”)

③ ②の一覧からIPv4とIPv6を抽出する

IPv4 : System.Net.Sockets.AddressFamily.InterNetwork
IPv6 : System.Net.Sockets.AddressFamily.InterNetworkV6

最後までお読みいただきありがとうございます。

・こちらの書籍を参考にVB.Net勉強しています。

スポンサーリンク