【发布时间】:2015-08-01 09:14:34
【问题描述】:
在 C# 中,我希望获得自己的 DHCP 或静态 IP 地址。
我使用这个代码:
string host = Dns.GetHostName();
IPHostEntry ip = Dns.GetHostEntry(host);
Console.WriteLine(ip.AddressList[0].ToString());
我得到了这些结果:
我怎么知道该使用哪一个?我在这台电脑上也安装了虚拟电脑。
【问题讨论】:
在 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(以太网、Wireless80211 等)并按这些属性进行过滤
您还可以访问 IPv4InterfaceProperties.IsDhcpEnabled 属性,例如:
foreach (NetworkInterface ni in NetworkInterface.GetAllNetworkInterfaces())
{
Console.WriteLine(ni.GetIPProperties().GetIPv4Properties().IsDhcpEnabled);
}
【讨论】:
我在这里找到了答案:
这是代码(以防链接损坏。我只是不想像你看到的那样传递此代码)
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);
【讨论】: