2016-01-12 4 views
2

Я попытался получить IP-адрес из DNS с помощью IPAddress[] ip = Dns.GetHostAddresses("www.google.com"); в приложении univesal C# windows.C# system.net.dns универсальное приложение (W10) не работает

Но он показывает мне ошибку Error CS0103 The name 'Dns' does not exist in the current context

Я попробовал его в консольном приложении, она прекрасно работает. Namespace System.Net не содержит Dns в универсальном приложении win 10. Не могли бы вы сказать мне, где проблема или другое решение?

Мой КОД

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

Чтобы получить это работает для меня, я должен был удалить WWW, так просто («google.com») .. К сожалению, не читал немного, что вы пытаетесь заставить его работать в приложении Windows, – spacemonkeys

+0

в универсальном приложении Windows? Он работает для меня в приложении cosole, но не в универсальном:/ – Qefik

ответ

0

Ошибка. System.Net.Dns недоступен в .Net Framework for Windows Runtime.

Вместо этого вы можете использовать классы Windows Runtime: вызывать Windows.Networking.Sockets. DatagramSocket.GetEndpointPairsAsync затем изучить возвращаемый 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 }); 
    } 
} 
+0

Это выглядит круто, но я не могу понять, почему этот код дает мне эту ошибку: 'Ошибка \t CS4033 \t Оператор 'wait' может использоваться только в рамках метода async. Подумайте о маркировке этого метода с помощью модификатора «async» и измените его тип возврата на «Задача». «Я никогда не использовал такой метод. – Qefik

+0

Именно то, что говорит ошибка: вам нужно пометить содержащийся метод async. Это важный и необходимый шаблон для понимания при написании универсальных приложений на C#. См. Https://msdn.microsoft.com/en-us/library/hh191443.aspx для обзора –

+0

Thans for Your time, это работает :) – Qefik

0

, что происходит, когда вы делаете следующее вместо ConsoleApp

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

или если есть более IP-адресов, вы можете сделать следующее

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 
} 
+0

спасибо, но он не работает, Microsoft.Phone.Net.NetworkInformation пространство имен для WP, а не универсального приложения:/Я хочу запустить его под W10 (M) Я неправильно сформулирую вопрос, я отредактирую его, чтобы быть более очевидным. – Qefik

Смежные вопросы