【问题标题】:How do I resolve an IP Adress from a host name on windows phone 8.1?如何从 windows phone 8.1 上的主机名解析 IP 地址?
【发布时间】:2015-10-21 00:31:59
【问题描述】:

如何编写解析作为返回 IP 地址的参数输入的主机名的方法?

我搜索了一种方法来做到这一点,我发现的两个网站都有类似的解决方案

WP7 Mango - How to get an IP address for a given hostname

https://social.msdn.microsoft.com/Forums/en-US/5c07b344-be5b-4358-beb1-abea581ca2bb/how-to-resolve-a-hostname-to-an-ip-address-in-windows-phone-8?forum=wpdevelop

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
}

我在使用这些解决方案时遇到问题。

我无法更改 OnNameResolved 的返回类型,并且 ResolveHostNameAsync 需要 NameResolutionCallback。

那么如何创建一个返回 IP 地址的方法呢?

【问题讨论】:

    标签: c# callback windows-phone-8.1 ip-address hostname


    【解决方案1】:

    鉴于此处 .NET Framework 的功能有限,您必须在此处编写异步方法:

    public static class NetworkHelper
    {
        public event EventHandler<DnsLookupCompletedEventArgs> DnsLookupCompleted;
    
        public void DnsLookupAsync(string hostname)
        {
            var endpoint = new DnsEndPoint(hostname, 0);
            DeviceNetworkInformation.ResolveHostNameAsync(endpoint, OnNameResolved, null);  
        }
    
        private void OnNameResolved(NameResolutionResult result)
        {
            IPEndPoint[] endpoints = result.IPEndPoints;
            var args = new DnsLookupCompletedEventArgs(endpoints);
            if (DnsLookupCompleted != null)
                DnsLookupCompleted(this, args);
        }
    }
    

    DnsLookupCompletedEventArgs 看起来像这样,因此您可以稍后处理端点:

    public class DnsLookupCompletedEventArgs : EventArgs
    {
        public IPEndPoint[] Endpoints { get; private set; }
    
        public DnsLookupCompletedEventArgs(IPEndPoint[] endpoints)
        {
            Endpoints = endpoints;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2013-11-19
      • 2012-08-04
      • 2013-03-25
      • 2014-02-26
      • 2019-09-29
      • 2011-03-12
      • 2014-10-13
      • 2011-01-10
      • 2013-01-29
      相关资源
      最近更新 更多