2011-07-23 9 views
5

Necesito obtener una dirección IP para un nombre de host dado desde un DnsEndPoint, y convertirlo a un IPEndPoint. ¿Cómo voy a hacer esto? WP7 carece de una función Dns.GetHostEntry, ¿hay alguna manera de hacerlo sin crear un Socket, enviar datos al host, recibir un ping desde el host y leer la propiedad RemoteEndPoint para obtener la dirección IP del host?WP7 Mango - Cómo obtener una dirección IP para un nombre de host dado

Respuesta

5

Trate de usar DeviceNetworkInformation.ResolveHostNameAsync en el Microsoft.Phone.Net.NetworkInformation espacio de nombres, como esto:

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

No hay forma de hacerlo en el marco. Puede usar un socket suponiendo que el host admite ping. Dependerá de la red en la que se encuentre (supongo que no puede controlar esto) y de los requisitos exactos de la aplicación.

Puede ser más fácil hacer que su aplicación funcione con direcciones IP y no requerir un nombre de host si todo lo que tiene es una dirección IP.

+0

El el problema es; Estoy lidiando con direcciones IP asignadas dinámicamente que cambian con frecuencia y actualizándolas a través de No-IP, pero supongo; una vez más con Microsoft, la mejor solución a veces no es la solución. – IDWMaster

+0

Terminé configurando un servicio UDP para la búsqueda IP del host. No es realmente una "solución" por el momento, pero puede ser la mejor solución que hay en este momento. – IDWMaster

2

Creo que estoy lidiando con el mismo problema. También tengo una dirección IP dinámica que actualiza el dns con No-ip.

Por lo que sé, System.Net.Dns no está disponible en esta versión de Windows Phone. Tal vez en las próximas versiones.

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

Al comienzo de mi aplicación Im que va a crear una llamada de servicio web para el anfitrión (al servidor web en el mismo) pidiendo la Dirección IP. Creo que resolveré el problema mientras tanto.

Este podría ser el servicio 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(); 
    } 
    } 

Si ustedes encontrar un enfoque directo por favor hágamelo saber

Cuestiones relacionadas