如何在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地址的方法?
考虑到这里。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;
}
}