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");
}
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 });
}
}
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
}