6

我正在将 Windows 窗体类库迁移到 Metro App 类库。其中有一个代码块,它从下面的主机名中给出 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中没有IPHostEntryor 。.DnsIPAddress

如果有人知道方法,请告诉我在 Windows 8 Metro 应用程序中替换这些。

4

2 回答 2

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;
    } 
于 2014-05-17T19:32:51.403 回答
1

检查如何在 Metro/WinRT 中将主机名解析为 IP 地址?并将'http'替换为https并尝试。

IE

await clientSocket.ConnectAsync(serverHost, "https");
于 2012-11-21T09:54:40.297 回答