c# system.net.dns universal app (W10) not working

蹲街弑〆低调 提交于 2019-12-11 00:12:05

问题


I tried to get IP adress from DNS by using IPAddress[] ip = Dns.GetHostAddresses("www.google.com"); in univesal c# windows app.

But it shows me error Error CS0103 The name 'Dns' does not exist in the current context

I tried it in console app, it works perfectly. Namespace System.Net doesnt contain Dns in win 10 universal app. Could you tell me, where is problem or another solution?

My CODE

using System.Net;
public MainPage()
{
    this.InitializeComponent();
}

private void button_Click(object sender, RoutedEventArgs e)
{
    string zaznam = In.Text;
    IPAddress[] ip = Dns.GetHostAddresses("www.google.com");
}

回答1:


The error is correct. System.Net.Dns is not available in the .Net Framework for Windows Runtime.

You can use the Windows Runtime classes instead: Call Windows.Networking.Sockets.DatagramSocket.GetEndpointPairsAsync then examine the returned EndpointPairs

async Task ListEndpoints()
{
    HostName host = new HostName("www.stackoverflow.com");
    var eps = await DatagramSocket.GetEndpointPairsAsync(host, "80");
    foreach(EndpointPair ep in eps)
    {
        Debug.WriteLine("EP {0} {1}",new object[] { ep.LocalHostName, ep.RemoteHostName });
    }
}



回答2:


what happens when you do the following instead ConsoleApp

IPHostEntry ipHostEntry = Dns.GetHostEntry("www.google.com");

or if there are more Ip addresses you can do the following

IPAddress[] ips;
ips = Dns.GetHostAddresses("www.google.com");
Console.WriteLine("GetHostAddresses({0}) returns:", "google.com");//if you are passing in a hostname inside a method change this to hostname variable
foreach (IPAddress ip in ips)
{
    Console.WriteLine("    {0}", ip);
}

Universal APP try the following below Microsoft.Phone.Net.NetworkInformation namespace

public void DnsLookup(string hostname)
{
    var endpoint = new DnsEndPoint(hostname, 0);
    DeviceNetworkInformation.ResolveHostNameAsync(endpoint, OnNameResolved, null);  
}

private void OnNameResolved(NameResolutionResult result)
{
    IPEndPoint[] endpoints = result.IPEndPoints;
    // Do something with your endpoints
}


来源:https://stackoverflow.com/questions/34754406/c-sharp-system-net-dns-universal-app-w10-not-working

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!