2011-07-23 12 views
5

Potrzebuję uzyskać adres IP dla danej nazwy hosta z DnsEndPoint i przekonwertować go na IPEndPoint. Jak miałbym to zrobić? WP7 nie ma funkcji Dns.GetHostEntry, więc czy jest jakiś sposób, aby to zrobić bez tworzenia gniazda, wysyłania danych do hosta, a następnie odbierania polecenia ping od hosta i odczytywania właściwości RemoteEndPoint w celu uzyskania adresu IP hosta?WP7 Mango - Jak uzyskać adres IP dla danej nazwy hosta?

Odpowiedz

5

Spróbuj użyć DeviceNetworkInformation.ResolveHostNameAsync w przestrzeni nazw Microsoft.Phone.Net.NetworkInformation, tak:

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 
} 
2

Nie można tego zrobić w ramach. Możesz użyć asumptowania gniazd, które host obsługuje ping. Będzie to zależało od sieci, w której pracujesz (zakładam, że nie możesz tego kontrolować) i dokładnych wymagań aplikacji.

Może być łatwiej uzyskać aplikację do pracy z adresami IP i nie wymagać nazwy hosta, jeśli wszystko, co masz, to adres IP.

+0

rzecz w tym; Mam do czynienia z dynamicznie przydzielanymi adresami IP, które często się zmieniają, i aktualizuję je poprzez No-IP, ale domyślam się; po raz kolejny w firmie Microsoft najlepsze rozwiązanie czasami nie jest rozwiązaniem. – IDWMaster

+0

Skończyłem konfigurowanie usługi UDP dla wyszukiwania adresu IP hosta. Nie jest to na razie "rozwiązanie", ale może być najlepszym sposobem obejścia tego problemu. – IDWMaster

2

Myślę, że mam do czynienia z tym samym problemem. Mam również dynamiczny adres IP aktualizacji dns z No-ip.

Co wiem System.Net.Dns nie jest dostępny w tej wersji systemu Windows Phone. Może w następnych wydaniach.

http://msdn.microsoft.com/en-us/library/system.net.dns.aspx

Na początku mojej aplikacji Im zamiar stworzyć wywołanie usługi sieci Web do hosta (do tego serwera w nim) z prośbą o IPaddress. Myślę, że rozwiążę ten problem w międzyczasie.

To może być usługa WCF

[ServiceContract] 
public interface IService1 
{ 
[OperationContract] 
string GetIpAddress(string value); 
} 

public class Service1 : IService1 
{ 
    public string GetIpAddress() 
    { 
    // Add the proper error handling and collection matching of course 
     IPAddress s = Dns.GetHostAddresses("www.mysite.com")[0]; 
     return s.ToString(); 
    } 
    } 

Jeśli faceci znaleźć bezpośrednie podejście proszę dać mi znać

Powiązane problemy