从LAN中的主机名获取IP地址

时间:2012-08-13 09:34:50

标签: c# windows-7 network-programming

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

6 个答案:

答案 0 :(得分: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

得到了这个

答案 1 :(得分: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匹配。

答案 2 :(得分:1)

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

答案 3 :(得分:1)

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

答案 4 :(得分:0)

答案 5 :(得分: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);

这种方法可能会获得比在DNS中注册的IP更多的IP。