Xamarin 从 WIFI 连接形成 GET DNS 服务器
Xamarin forms GET DNS server from WIFI connection
我正在使用 xamarin 表单,但遇到一个问题,
我正在尝试从 WIFI 获取 DNS 服务器地址,我正在使用 below 代码:
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)
{
Debug.WriteLine(dnsAdress);
}
}
}
问题是当我在 Microsoft 模拟器“UWP”上使用此代码时一切正常,请参见下面的图片 using UWP device
但是当我使用我的 android 手机时没有任何效果见下图
using android device
注意:所有设备都连接到同一个 wifi
我做了一个简单的测试你的代码并得到了相同的空值。然后看了IPInterfaceProperties.DnsAddresses属性文档,好像不支持xamarin.android.
另外,我也搜索了这个,但没有找到任何解决方案。所以我尝试使用android native 方法通过以下代码获取dns地址。所以你可以尝试使用依赖服务获取android.
的dns地址
ConnectivityManager cm = (ConnectivityManager)GetSystemService(ConnectivityService);
//NetworkInfo has been deprecated, but I can not find the new api to to this
NetworkInfo activeNetworkInfo = cm.ActiveNetworkInfo;
foreach (Network network in cm.GetAllNetworks())
{
NetworkInfo networkInfo = cm.GetNetworkInfo(network);
if (networkInfo.GetType() == activeNetworkInfo.GetType())
{
LinkProperties lp = cm.GetLinkProperties(network);
foreach (InetAddress addr in lp.DnsServers)
{
var a = addr.GetAddress();
}
}
}
我正在使用 xamarin 表单,但遇到一个问题,
我正在尝试从 WIFI 获取 DNS 服务器地址,我正在使用 below 代码:
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)
{
Debug.WriteLine(dnsAdress);
}
}
}
问题是当我在 Microsoft 模拟器“UWP”上使用此代码时一切正常,请参见下面的图片 using UWP device
但是当我使用我的 android 手机时没有任何效果见下图 using android device
注意:所有设备都连接到同一个 wifi
我做了一个简单的测试你的代码并得到了相同的空值。然后看了IPInterfaceProperties.DnsAddresses属性文档,好像不支持xamarin.android.
另外,我也搜索了这个,但没有找到任何解决方案。所以我尝试使用android native 方法通过以下代码获取dns地址。所以你可以尝试使用依赖服务获取android.
的dns地址 ConnectivityManager cm = (ConnectivityManager)GetSystemService(ConnectivityService);
//NetworkInfo has been deprecated, but I can not find the new api to to this
NetworkInfo activeNetworkInfo = cm.ActiveNetworkInfo;
foreach (Network network in cm.GetAllNetworks())
{
NetworkInfo networkInfo = cm.GetNetworkInfo(network);
if (networkInfo.GetType() == activeNetworkInfo.GetType())
{
LinkProperties lp = cm.GetLinkProperties(network);
foreach (InetAddress addr in lp.DnsServers)
{
var a = addr.GetAddress();
}
}
}