IP アドレスでホスト名を取得する方法のサンプルがたくさん見つかりました。LAN 内のホストの IP アドレスを取得するにはどうすればよいですか?
6 に答える
これを試して
public static void DoGetHostAddresses(string hostname)
{
IPAddress[] ips;
ips = Dns.GetHostAddresses(hostname);
Console.WriteLine("GetHostAddresses({0}) returns:", hostname);
foreach (IPAddress ip in ips)
{
Console.WriteLine(" {0}", ip);
}
}
http://msdn.microsoft.com/en-us/library/system.net.dns.gethostaddresses.aspxからこれを入手しました
PC から IP アドレス (V4) を取得する場合の簡単なコードを次に示します。
このライブラリをクラスにインポートします
using System.Net;
これらの変数を初期化してコードに宣言します。これらには、ホスト名、IP アドレス、およびホスト アドレスの配列が含まれます。
string HostName = Dns.GetHostName().ToString();
IPAddress[] IpInHostAddress = Dns.GetHostAddresses(HostName);
string IPV4Address = IpInHostAddress[1].ToString(); //Default IPV4Address. This might be the ip address you need to retrieve
string IPV6Address = IpInHostAddress[0].ToString(); //Default Link local IPv6 Address
コマンド プロンプトを開き、「ipconfig」と入力して Enter キーを押します。完了したら、文字列 IPV4Address が PC の IPv4Address と一致するかどうかを確認できます。
古い Dns.GetHostAddresses の代わりに Dns.GetHostEntry(hostname) を使用します。
マシンの名前を知っている限り、使用できますDns.GetHostAddresses
。ネットワーク DNS はそれを LAN コンピュータとして認識し、適切な IP を返す必要があります。
Windows管理クラスを使用してこれを行うことができます。これは、同じドメインにあるリモートマシンでも機能します(ただし、これを機能させるためにセキュリティまたはポリシー設定を有効または無効にする必要があるかどうかはわかりません)。例えば:
public List<NetworkAdapter> GetAdapterList()
{
ManagementClass mgmt = new ManagementClass("Win32_NetworkAdapterConfiguration ");
ManagementObjectCollection moc = mgmt.GetInstances();
List<NetworkAdapter> adapters = new List<NetworkAdapter>();
// Search for adapters with IP addresses
foreach(ManagementObject mob in moc)
{
string[] addresses = (string[])mob.Properties["IPAddress"].Value;
if (null == addresses)
{
continue;
}
NetworkAdapter na = new NetworkAdapter();
na.Description = (string) mob.Properties["Description"].Value;
na.MacAddress = (string) mob.Properties["MACAddress"].Value;
na.IPAddresses = addresses;
adapters.Add(na);
}
return adapters;
}
リモートマシンにアクセスするには、代わりに次のような管理クラスを作成します。
ManagementClass mgmt = new ManagementClass
(\\\\servername\\root\\cimv2:Win32_NetworkAdapterConfiguration);
このアプローチでは、DNSに登録されているIPよりも多くのIPを取得できる可能性があります。
これがどのように行われているかの優れた例です: http://www.codeproject.com/Articles/854/How-To-Get-IP-Address-Of-A-Machine