2012-11-21 76 views
6

我正在將Windows窗體類庫遷移到Metro App類庫。在這有一個代碼塊,使ip地址從主機名,下面,如何從c#windows 8 Metro App中的HostName獲取IPAddress?

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

如:

地址:talk.google.com

ip地址:xx.xxx.xxx.xx

但我已經看到在Metro App System.Net中沒有IPHostEntryDnsIPAddress。 。

如果有人知道意味着請告訴我在Windows 8 metro應用程序中替換這些。

+0

這是一個相當迂迴的方式:http://stackoverflow.com/questions/11216625/how-to-resolve-a-hostname-to-an-ip-address- in-metro-winrt –

+0

嘗試Dns.GetHostByName(); – GiantHornet

+0

我試過了,它從ConnectAsync方法退出。 。 。 –

回答

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; 
    } 
相關問題