2

我发现了很多关于如何通过 IP 地址获取主机名的示例,如何获取 LAN 中主机的 IP 地址?

4

6 回答 6

4

试试这个

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得到这个

于 2012-08-13T09:42:06.797 回答
2

如果您想从您的电脑获取 IP 地址(V4),这是简单的代码。

将此库导入您的班级

using System.Net;

初始化这些变量并将其声明到您的代码中。它们包含主机名、ipaddress 和主机地址数组:

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”并按回车键。完成后,您可以检查字符串 IPV4Address 是否与我们电脑中的 IPv4Address 匹配。

于 2016-06-29T02:19:42.790 回答
1

只要您知道机器的名称,就可以使用Dns.GetHostAddresses. 您的网络 DNS 应将其识别为 LAN 计算机并返回正确的 IP。

于 2012-08-13T09:39:00.077 回答
1

使用 Dns.GetHostEntry(hostname) 而不是过时的 Dns.GetHostAddresses。

于 2013-08-26T09:28:03.697 回答
0

这是一个很好的例子:http: //www.codeproject.com/Articles/854/How-To-Get-IP-Address-Of-A-Machine

于 2012-08-13T09:38:28.590 回答
0

您可以使用 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);

这种方法可能会让您获得更多的 IP,而不仅仅是在 DNS 中注册的那些。

于 2012-08-13T09:48:44.723 回答