![](/img/trans.png)
[英]How do I get the current directory using C# that my Windows App Store app is running in?
[英]How do I get my current DNS Server in C#?
如何在 C# 中获取当前的 DNS 服务器?
有关示例代码,请参阅IPInterfaceProperties.DnsAddresses
上的 MSDN。
我最近试图做同样的事情,并发现了 Robert Sindal 的这个很好的例子。
using System;
using System.Net;
using System.Net.NetworkInformation;
namespace HowToGetLocalDnsServerAddressConsoleApp
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine(GetDnsAdress());
Console.ReadKey();
}
private static IPAddress GetDnsAdress()
{
NetworkInterface[] networkInterfaces = NetworkInterface.GetAllNetworkInterfaces();
foreach (NetworkInterface networkInterface in networkInterfaces)
{
if (networkInterface.OperationalStatus == OperationalStatus.Up)
{
IPInterfaceProperties ipProperties = networkInterface.GetIPProperties();
IPAddressCollection dnsAddresses = ipProperties.DnsAddresses;
foreach (IPAddress dnsAdress in dnsAddresses)
{
return dnsAdress;
}
}
}
throw new InvalidOperationException("Unable to find DNS Address");
}
}
}
此方法确定所有“up”接口上配置的 dns 服务器地址。 它允许选择是否需要 IPv4 和/或 IPv6 地址。
using System.Net.NetworkInformation;
using System.Net.Sockets;
public static IPAddress[] GetDnsAdresses(bool ip4Wanted, bool ip6Wanted)
{
NetworkInterface[] interfaces = NetworkInterface.GetAllNetworkInterfaces();
HashSet<IPAddress> dnsAddresses = new HashSet<IPAddress>();
foreach (NetworkInterface networkInterface in interfaces)
{
if (networkInterface.OperationalStatus == OperationalStatus.Up)
{
IPInterfaceProperties ipProperties = networkInterface.GetIPProperties();
foreach (IPAddress forAddress in ipProperties.DnsAddresses)
{
if ((ip4Wanted && forAddress.AddressFamily == AddressFamily.InterNetwork) || (ip6Wanted && forAddress.AddressFamily == AddressFamily.InterNetworkV6))
{
dnsAddresses.Add(forAddress);
}
}
}
}
return dnsAddresses.ToArray();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.