記事ディレクトリ
解決
ホスト名の取得
Dns クラスは、ドメイン ネーム システム (DNS) 操作用の静的メソッドのセットを提供します。
Dns.GetHostName();
Dns.GetHostName() メソッドを使用して、ローカル コンピューターのホスト名を取得できます。これは静的メソッドです。このメソッドは、オペレーティング システムのネットワーク スタックを呼び出して、コンピューターのホスト名を取得します。ホスト名は、ネットワーク上のデバイスを識別するために使用される名前です。ネットワーク上では各機器が固有のホスト名を持ち、そのホスト名を介して機器間の通信がネットワーク上で行われます。
IPアドレスを取得する
Dns.GetHostAddresses(hostName);
ホスト名を取得した後、Dns.GetHostAddresses(hostName) メソッドを使用して IP リストを取得します。これも、指定されたホスト名 (または IP アドレス文字列) に対応する IP アドレス リストを取得するために使用される静的メソッドです。ホスト名または IP アドレスをパラメータとして受け取り、ホスト名または IP アドレスに関連付けられたすべての IP アドレスを含む IPAddress[] 配列を返します。
このメソッドは、まずパラメータで渡されたホスト名の解決を試みます。有効なホスト名が渡されると、DNS サーバーにクエリを実行して、そのホスト名に対応する IP アドレスを見つけます。関連する IP アドレスが見つかった場合は、これらの IP アドレスを含む配列が返されます。
さらに、受信パラメータが有効な IP アドレス文字列 (例: "192.168.0.1") の場合、メソッドはその文字列を直接解析して IPAddress オブジェクトにし、それを配列に入れて返します。
解析プロセス中に問題やアクセス制限が発生した場合、このメソッドは SocketException や SecurityException などの例外をスローします。
IPv4アドレスのフィルタリング
IPv4 アドレスは、列挙値 AddressFamily.InterNetwork を通じてフィルタリングできます。
AddressFamily は、さまざまなネットワーク アドレス タイプを定義する列挙型です。このうち、InterNetwork は IPv4 アドレス、InterNetworkV6 は IPv6 アドレス、Unix は Unix ドメイン ソケット アドレスなどを表します。
関数
using System.Collections.Generic;
using System.Text;
using System.Net.Sockets;
using System.Net;
using System;
public static List<string> GetIPv4Addresses()
{
string hostName = Dns.GetHostName();
IPAddress[] addresses = Dns.GetHostAddresses(hostName);
List<string> ipv4Addresses = new List<string>();
foreach (IPAddress address in addresses)
{
// 判断是否为IPv4地址
if (address.AddressFamily == AddressFamily.InterNetwork)
{
ipv4Addresses.Add(address.ToString());
}
}
return ipv4Addresses;
}
この関数は見つかったすべての IPv4 アドレスを返します。呼び出し後、見つかったすべての IPv4 アドレスを含むリストが取得されます。IPv4 アドレスが見つからない場合は、空のリストが返されます。
関数呼び出し
見つかったすべての IPv4 アドレスを出力します。
関数呼び出しは次のとおりです。
List<string> ipv4Addresses = GetIPv4Addresses();
foreach (string address in ipv4Addresses)
{
Console.WriteLine(address);
}