Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.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/Internet的本地DHCP(或静态)IP地址_C#_Dns - Fatal编程技术网

C# 获取连接到LAN/Internet的本地DHCP(或静态)IP地址

C# 获取连接到LAN/Internet的本地DHCP(或静态)IP地址,c#,dns,C#,Dns,在C#中,我希望获得自己的DHCP或静态IP地址 我使用以下代码: string host = Dns.GetHostName(); IPHostEntry ip = Dns.GetHostEntry(host); Console.WriteLine(ip.AddressList[0].ToString()); 我得到了这些结果: 我怎么知道该用哪一个?我也在这台电脑上安装了虚拟电脑。您可以使用WMI访问网络接口属性,并确定是否启用了DHCP: ManagementObjectSearche

在C#中,我希望获得自己的DHCP或静态IP地址

我使用以下代码:

string host = Dns.GetHostName();
IPHostEntry ip = Dns.GetHostEntry(host);
Console.WriteLine(ip.AddressList[0].ToString());
我得到了这些结果:


我怎么知道该用哪一个?我也在这台电脑上安装了虚拟电脑。

您可以使用WMI访问网络接口属性,并确定是否启用了DHCP:

ManagementObjectSearcher searcherNetwork = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_NetworkAdapterConfiguration");
foreach (ManagementObject queryObj in searcherNetwork.Get())
{
    foreach (var prop in queryObj.Properties)
    {
        Console.WriteLine(string.Format("Name: {0} Value: {1}", prop.Name, prop.Value));
    }
}
或者,您可以使用NetworkInterface.GetAllNetworkInterfaces()获取更多信息,如名称和NetworkInterfaceType(以太网、Wireless8021等),并按这些属性进行筛选

您还可以访问IPv4InterfaceProperties.IsDhcpEnabled属性,例如:

foreach (NetworkInterface ni in NetworkInterface.GetAllNetworkInterfaces())
{
    Console.WriteLine(ni.GetIPProperties().GetIPv4Properties().IsDhcpEnabled);
}

我在这里找到了答案:

这是代码(以防链接断开。我只是不想将此代码作为我的代码传递给你看)


您好,谢谢您的回答,但我只想找到连接到网络的PC的IP地址,无论是静态、dhcp还是/和无线协议。这必须在我无法控制的不同PC上工作,因此我看不出该代码对我有何帮助我很抱歉我更新了答案并添加了访问IsDhcpEnabled属性的位。同样,在WMI版本中,您可以看到有一个值为“Name:DHCPEnabled value:True”的属性,因此可以使用它来标识DHCP是否已启用。对不起,中间的理解是,它与DHCP还是静态无关。我只是说可能是你的更新仍然没有给我任何关于我最初发布代码的信息。我仍然得到一个IP地址数组。我只需要连接到局域网/互联网的IP地址:)
string hostName = Dns.GetHostName(); // Retrive the Name of HOST
Console.WriteLine(hostName);
// Get the IP
string myIP = Dns.GetHostByName(hostName).AddressList[0].ToString();
Console.WriteLine("My IP Address is :"+myIP);