所以我们都知道cmd命令'ipconfig/all'。例如,我们有Wi-Fi网络接口。DHCP已启用,DNS服务器是我们自己的路由器。我如何知道网络接口是否在 C# 中使用路由器作为 DNS 服务器?在代码中,我可以获取DNS服务器IP和所有其他信息,但是是否可以知道路由器是否为DNS服务器?
默认类NetworkInterface
可能不会告诉我...但也许有某种算法可以确定这一点?
NetworkInterface
类公开大量数据,如接口网关和 DNS 服务器 IP。只需要检查gateway ip == dns ip
. 每个接口可以有多个网关和 DNS,因此您需要自己找到一些规则。在那里,我基于此的天真实现 SO:
NetworkInterface[] networkInterfaces = NetworkInterface.GetAllNetworkInterfaces();
foreach (NetworkInterface networkInterface in networkInterfaces)
{
if (networkInterface.OperationalStatus == OperationalStatus.Up && networkInterface.NetworkInterfaceType != NetworkInterfaceType.Loopback)
{
IPInterfaceProperties ipProperties = networkInterface.GetIPProperties();
var gateways = ipProperties.GatewayAddresses.Select(ga => ga.Address);
var dns = ipProperties.DnsAddresses;
if (dns.Any(d => gateways.Contains(d))){
Console.Write("dns router found on interface " + networkInterface.Name);
}
}
}