WP7芒果 - 如何获取给定主机名的IP地址

时间:2011-07-23 13:58:25

标签: c# dns ip windows-phone-7

我需要从DnsEndPoint获取给定主机名的IP地址,并将其转换为IPEndPoint。我该怎么做呢? WP7缺少Dns.GetHostEntry函数,所以有没有办法在不创建Socket的情况下执行此操作,向主机发送数据,然后从主机接收ping并读取RemoteEndPoint属性以获取主机的IP地址?

3 个答案:

答案 0 :(得分:5)

尝试在DeviceNetworkInformation.ResolveHostNameAsync命名空间中使用Microsoft.Phone.Net.NetworkInformation,如下所示:

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
}

答案 1 :(得分:2)

没有办法在框架中构建这个。您可以使用套接字来确定主机支持ping。它取决于您运行的网络(我假设您无法控制它)以及应用程序的确切要求。

可能更容易让您的应用使用IP地址,如果您拥有的只是IP地址,则不需要主机名。

答案 2 :(得分:2)

我认为我正在处理同样的问题。我还有一个动态IP用No-ip更新dns。

据我所知,System.Net.Dns在此版本的Windows Phone中不可用。 也许在下一个版本中。

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

在我的应用程序开始时,我将创建一个Web服务调用主机(到其中的Web服务器),要求IPAddress。我想我会在此期间解决问题。

这可能是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();
    }
  }

如果你们找到直接的方法,请告诉我