如何在windows phone 8.1上通过主机名解析IP地址?

本文关键字:主机 IP 地址 windows phone | 更新日期: 2023-09-27 18:05:39

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

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

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

https://social.msdn.microsoft.com/forums/en us/5c07b344 be5b - 4358 beb1 - abea581ca2bb/how - -解决- - -一个主机名的ip地址-在- windows -电话- 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
}

我使用这些解决方案有困难。

我不能改变onnamesresolved的返回类型,ResolveHostNameAsync需要一个namesoltioncallback。

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

如何在windows phone 8.1上通过主机名解析IP地址?

考虑到这里。net框架的有限功能,您必须在这里编写异步方法:

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;
    }
}