获取我的 dhcp 服务器 ip 地址
get my dhcp server ip address
我的 DHCP 服务器地址是 192.168.0.1
但是,我假设其他网络的 DHCP 服务器可以有不同的 IP 地址。
在 C# 中获取我的网络 DHCP 服务器 IP 地址的好方法是什么
我看过
System.Net.NetworkInformation
但看不到任何我可以要求的东西。
我怀疑这也是一件简单的事情?
谢谢
有关提供 IP 地址的 DHCP 服务器的信息是特定于接口的,因为主机上可以有多个接口,每个接口都连接到具有不同 DHCP 服务器的不同网络。根据 MSDN 文档,此信息应位于 IPInterfaceProperties.DhcpServerAddresses
下。他们文档中的示例代码:
public static void DisplayDhcpServerAddresses()
{
Console.WriteLine("DHCP Servers");
NetworkInterface[] adapters = NetworkInterface.GetAllNetworkInterfaces();
foreach (NetworkInterface adapter in adapters)
{
IPInterfaceProperties adapterProperties = adapter.GetIPProperties();
IPAddressCollection addresses = adapterProperties.DhcpServerAddresses;
if (addresses.Count >0)
{
Console.WriteLine(adapter.Description);
foreach (IPAddress address in addresses)
{
Console.WriteLine(" Dhcp Address ............................ : {0}",
address.ToString());
}
Console.WriteLine();
}
}
}
你可以试试这个:
Console.WriteLine("DHCP Servers");
NetworkInterface[] adapters = NetworkInterface.GetAllNetworkInterfaces();
foreach (NetworkInterface adapter in adapters)
{
IPInterfaceProperties adapterProperties = adapter.GetIPProperties();
IPAddressCollection addresses = adapterProperties.DhcpServerAddresses;
if (addresses.Count >0)
{
Console.WriteLine(adapter.Description);
foreach (IPAddress address in addresses)
{
Console.WriteLine(" Dhcp Address ............................ : {0}",
address.ToString());
}
Console.WriteLine();
}
}
更多信息:Here
使用 System.Linq
,您可以使这更简单:
public static IEnumerable<IPAddress> GetDhcpServers() =>
NetworkInterface.GetAllNetworkInterfaces().
SelectMany(i => i.GetIPProperties().DhcpServerAddresses).Distinct();
如果您只想要活动服务器,可以按适配器的 OperationalStatus
:
进行过滤
public static IEnumerable<IPAddress> GetActiveDhcpServers() =>
NetworkInterface.GetAllNetworkInterfaces().
Where(i => i.OperationalStatus == OperationalStatus.Up).
SelectMany(i => i.GetIPProperties().DhcpServerAddresses).Distinct();
我的 DHCP 服务器地址是 192.168.0.1
但是,我假设其他网络的 DHCP 服务器可以有不同的 IP 地址。
在 C# 中获取我的网络 DHCP 服务器 IP 地址的好方法是什么
我看过
System.Net.NetworkInformation
但看不到任何我可以要求的东西。
我怀疑这也是一件简单的事情?
谢谢
有关提供 IP 地址的 DHCP 服务器的信息是特定于接口的,因为主机上可以有多个接口,每个接口都连接到具有不同 DHCP 服务器的不同网络。根据 MSDN 文档,此信息应位于 IPInterfaceProperties.DhcpServerAddresses
下。他们文档中的示例代码:
public static void DisplayDhcpServerAddresses()
{
Console.WriteLine("DHCP Servers");
NetworkInterface[] adapters = NetworkInterface.GetAllNetworkInterfaces();
foreach (NetworkInterface adapter in adapters)
{
IPInterfaceProperties adapterProperties = adapter.GetIPProperties();
IPAddressCollection addresses = adapterProperties.DhcpServerAddresses;
if (addresses.Count >0)
{
Console.WriteLine(adapter.Description);
foreach (IPAddress address in addresses)
{
Console.WriteLine(" Dhcp Address ............................ : {0}",
address.ToString());
}
Console.WriteLine();
}
}
}
你可以试试这个:
Console.WriteLine("DHCP Servers");
NetworkInterface[] adapters = NetworkInterface.GetAllNetworkInterfaces();
foreach (NetworkInterface adapter in adapters)
{
IPInterfaceProperties adapterProperties = adapter.GetIPProperties();
IPAddressCollection addresses = adapterProperties.DhcpServerAddresses;
if (addresses.Count >0)
{
Console.WriteLine(adapter.Description);
foreach (IPAddress address in addresses)
{
Console.WriteLine(" Dhcp Address ............................ : {0}",
address.ToString());
}
Console.WriteLine();
}
}
更多信息:Here
使用 System.Linq
,您可以使这更简单:
public static IEnumerable<IPAddress> GetDhcpServers() =>
NetworkInterface.GetAllNetworkInterfaces().
SelectMany(i => i.GetIPProperties().DhcpServerAddresses).Distinct();
如果您只想要活动服务器,可以按适配器的 OperationalStatus
:
public static IEnumerable<IPAddress> GetActiveDhcpServers() =>
NetworkInterface.GetAllNetworkInterfaces().
Where(i => i.OperationalStatus == OperationalStatus.Up).
SelectMany(i => i.GetIPProperties().DhcpServerAddresses).Distinct();