2012-11-21 13 views
6

Sto migrando la libreria di classi di Windows Form alla libreria di classi App Metro. In che c'è un codice di blocco che dà l'IPAddress dal nome host, di seguito,Come ottenere l'indirizzo IP da HostName in C# windows 8 Metro App?

IPHostEntry ipHostInfo = Dns.GetHostEntry(Address); 
IPAddress ipAddress = ipHostInfo.AddressList[0];// IPAddress.Parse(address); 
IPEndPoint endPoint = new IPEndPoint(ipAddress, Port); 

esempio:

Indirizzo: talk.google.com

ipAddress: xx.xxx.xxx.xx

ma ho visto che non ci sia IPHostEntry o Dns o IPAddress in Metro App System.Net. .

Se qualcuno sa che significa per favore dimmi la sostituzione di questi in app Metro 8 di Windows.

+0

Ecco un modo piuttosto rotonda: http://stackoverflow.com/questions/11216625/how-to-resolve-a-hostname-to-an-ip-address- in-metro-winrt –

+0

prova Dns.GetHostByName (); – GiantHornet

+0

L'ho provato, Esce dal metodo ConnectAsync. . . –

risposta

2
using System.Threading.Tasks; 

public async static Task<string> ResolveDNS(string remoteHostName) 
    { 
     if (string.IsNullOrEmpty(remoteHostName)) 
      return string.Empty; 

     string ipAddress = string.Empty; 

     try 
     { 
      IReadOnlyList<EndpointPair> data = 
       await DatagramSocket.GetEndpointPairsAsync(new HostName(remoteHostName), "0"); 

      if (data != null && data.Count > 0) 
      { 
       foreach (EndpointPair item in data) 
       { 
        if (item != null && item.RemoteHostName != null && 
            item.RemoteHostName.Type == HostNameType.Ipv4) 
        { 
         return item.RemoteHostName.CanonicalName; 
        } 
       } 
      } 
     } 
     catch (Exception ex) 
     { 
      ipAddress = ex.Message; 
     } 

     return ipAddress; 
    } 
Problemi correlati