Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从LAN中的主机名获取IP地址_C#_Windows 7_Network Programming - Fatal编程技术网

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

C# 从LAN中的主机名获取IP地址,c#,windows-7,network-programming,C#,Windows 7,Network Programming,我找到了许多关于如何通过IP地址获取主机名的示例,如何在LAN中获取主机的IP地址?这里有一个很好的例子说明了这一点:只要知道机器的名称,就可以使用。您的网络DNS应将其识别为LAN计算机并返回正确的IP。尝试此操作 public static void DoGetHostAddresses(string hostname) { IPAddress[] ips; ips = Dns.GetHostAddresses(hostname); Console.WriteLi

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

这里有一个很好的例子说明了这一点:

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

尝试此操作

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);
    }
}

这是我从

获得的。您可以使用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;
}

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

使用DNS.GetHostEntry(主机名)而不是过时的DNS.GetHostAddresses。

如果您想从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是否与我们电脑中的IPV4Address匹配。

您尝试了什么?我见过很多这样的例子。我想答案也是一样的,这对你有帮助吗?(包括示例代码)嗨..是的..我找到了答案..很有帮助..谢谢大家!这是上面的原件(如果需要更深入的挖掘);
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