Dns.GetHostEntry 方法

定义

将主机名或 IP 地址解析为 IPHostEntry 实例。

重载

GetHostEntry(IPAddress)

将 IP 地址解析为 IPHostEntry 实例。

GetHostEntry(String)

将主机名或 IP 地址解析为 IPHostEntry 实例。

GetHostEntry(String, AddressFamily)

将主机名或 IP 地址解析为 IPHostEntry 实例。

GetHostEntry(IPAddress)

Source:
Dns.cs
Source:
Dns.cs
Source:
Dns.cs

将 IP 地址解析为 IPHostEntry 实例。

public:
 static System::Net::IPHostEntry ^ GetHostEntry(System::Net::IPAddress ^ address);
public static System.Net.IPHostEntry GetHostEntry (System.Net.IPAddress address);
static member GetHostEntry : System.Net.IPAddress -> System.Net.IPHostEntry
Public Shared Function GetHostEntry (address As IPAddress) As IPHostEntry

参数

address
IPAddress

IP 地址。

返回

一个 IPHostEntry 实例,包含有关 address 中指定的主机的地址信息。

例外

addressnull

解析 address 时遇到错误。

address 是无效的 IP 地址。

示例

下面的代码示例使用 GetHostEntry 方法将 IP 地址解析为 IPHostEntry 实例。

public:
    static void DoGetHostEntry(IPAddress^ address)
    {
        IPHostEntry^ host = Dns::GetHostEntry(address);

        Console::WriteLine("GetHostEntry({0}) returns HostName: {1}", address->ToString(), host->HostName);
    }
public static void DoGetHostEntry(IPAddress address)
{
    IPHostEntry host = Dns.GetHostEntry(address);

    Console.WriteLine($"GetHostEntry({address}) returns HostName: {host.HostName}");
}
Public Sub DoGetHostEntry(address As IPAddress)

    Dim host as IPHostEntry = Dns.GetHostEntry(address)

    Console.WriteLine($"GetHostEntry({address}) returns HostName: {host.HostName}")

End Sub

注解

方法 GetHostEntry 在 DNS 服务器中查询与 IP 地址关联的 IP 地址和别名。

如果本地计算机未安装 IPv6,则根据 方法的结果 GetHostEntry 筛选 IPv6 地址。 因此,如果参数只有 IPv6 结果可用address,则可能会返回空IPHostEntry实例。

Aliases此方法不填充返回的IPHostEntry实例的 属性,并且始终为空。

注意

在应用程序中启用网络跟踪时,此成员会发出跟踪信息。 有关详细信息,请参阅 .NET Framework 中的网络跟踪

适用于

GetHostEntry(String)

Source:
Dns.cs
Source:
Dns.cs
Source:
Dns.cs

将主机名或 IP 地址解析为 IPHostEntry 实例。

public:
 static System::Net::IPHostEntry ^ GetHostEntry(System::String ^ hostNameOrAddress);
public static System.Net.IPHostEntry GetHostEntry (string hostNameOrAddress);
static member GetHostEntry : string -> System.Net.IPHostEntry
Public Shared Function GetHostEntry (hostNameOrAddress As String) As IPHostEntry

参数

hostNameOrAddress
String

要解析的主机名或 IP 地址。

返回

一个 IPHostEntry 实例,包含有关 hostNameOrAddress 中指定的主机的地址信息。

例外

hostNameOrAddress 参数为 null

hostNameOrAddress 参数的长度大于 255 个字符。

解析 hostNameOrAddress 参数时遇到错误。

hostNameOrAddress 参数是无效的 IP 地址。

示例

以下示例使用 GetHostEntry 方法将 IP 地址解析为 IPHostEntry 实例。

public:
    static void DoGetHostEntry(String^ hostname)
    {
        IPHostEntry^ host = Dns::GetHostEntry(hostname);

        Console::WriteLine("GetHostEntry({0}) returns:", host->HostName);

        for (int i = 0; i < host->AddressList->Length; i++)
        {
            Console::WriteLine("    {0}", host->AddressList[i]->ToString());			
        }
    }
public static void DoGetHostEntry(string hostname)
{
    IPHostEntry host = Dns.GetHostEntry(hostname);

    Console.WriteLine($"GetHostEntry({hostname}) returns:");

    foreach (IPAddress address in host.AddressList)
    {
        Console.WriteLine($"    {address}");
    }
}
Public Sub DoGetHostEntry(hostName As String)

    Dim host as IPHostEntry = Dns.GetHostEntry(hostname)

    Console.WriteLine($"GetHostEntry({hostname}) returns:")

    Dim addresses As IPAddress() = host.AddressList

    Dim index As Integer
    For index = 0 To addresses.Length - 1
        Console.WriteLine($"    {addresses(index)}")
    Next index

End Sub

注解

方法 GetHostEntry 在 DNS 服务器中查询与主机名或 IP 地址关联的 IP 地址。

如果空字符串作为 hostNameOrAddress 参数传递,则此方法返回本地主机的 IPv4 和 IPv6 地址。

如果找不到主机名,则 SocketException 返回值为 11001 的异常, (Windows 套接字错误WSAHOST_NOT_FOUND) 。 如果 DNS 服务器不响应,则可以返回此异常。 如果名称不是官方主机名或别名,或者在查询) 的数据库 (找不到该异常,也可以返回此异常。

ArgumentException如果hostNameOrAddress参数包含 AnyIPv6Any,则也会返回异常。

方法 GetHostEntry 假定如果在 参数中 hostNameOrAddress 传递 IP 文本字符串,则应用程序希望 IPHostEntry 返回具有所有属性集的实例。 这些属性包括 AddressListAliasesHostName。 因此,当传递 IP 字符串文本时, GetHostEntry 方法的实现表现出以下行为:

  1. 方法尝试分析地址。 hostNameOrAddress如果 参数包含合法的 IP 字符串文本,则第一阶段成功。

  2. 尝试使用 IP 字符串文本的 IP 地址进行反向查找以获取主机名。 此结果设置为 HostName 属性。

  3. 此反向查找中的主机名再次用于获取与名称关联的所有可能的 IP 地址,并将其设置为 AddressList 属性。

对于 IPv4 字符串文本,上述所有三个步骤都可能成功。 但可能会返回实际属于不同主机的 IPv4 地址的过时 DNS 记录。 这可能会导致步骤 #3 失败并引发异常, (IPv4 地址有 DNS PTR 记录,但 IPv4 地址) 没有 DNS A 记录。

对于 IPv6,上述步骤 #2 可能会失败,因为大多数 IPv6 部署不会为 IPv6 地址注册反向 (PTR) 记录。 因此,此方法可能会返回字符串 IPv6 文本作为完全限定的域 (FQDN) 属性中的 HostName 主机名。

方法 GetHostAddresses 在 IP 文本方面具有不同的行为。 如果上面的步骤 #1 成功 (成功分析为) 的 IP 地址,则会立即返回该地址作为结果。 不会尝试反向查找。

如果本地计算机未安装 IPv6,则根据 方法的结果 GetHostEntry 筛选 IPv6 地址。 因此,如果只有 IPv6 结果可用于 hostNameOrAddress.parameter,则可能会返回空IPHostEntry实例。

Aliases此方法不填充返回的IPHostEntry实例的 属性,并且始终为空。

注意

在应用程序中启用网络跟踪时,此成员会发出跟踪信息。 有关详细信息,请参阅 .NET Framework 中的网络跟踪

适用于

GetHostEntry(String, AddressFamily)

Source:
Dns.cs
Source:
Dns.cs
Source:
Dns.cs

将主机名或 IP 地址解析为 IPHostEntry 实例。

public:
 static System::Net::IPHostEntry ^ GetHostEntry(System::String ^ hostNameOrAddress, System::Net::Sockets::AddressFamily family);
public static System.Net.IPHostEntry GetHostEntry (string hostNameOrAddress, System.Net.Sockets.AddressFamily family);
static member GetHostEntry : string * System.Net.Sockets.AddressFamily -> System.Net.IPHostEntry
Public Shared Function GetHostEntry (hostNameOrAddress As String, family As AddressFamily) As IPHostEntry

参数

hostNameOrAddress
String

要解析的主机名或 IP 地址。

family
AddressFamily

应检索其 IP 的地址系列。 如果 Unspecified为 ,则检索所有 IP,而不考虑地址系列。

返回

一个 IPHostEntry 实例,其中包含有关 中指定的 hostNameOrAddress主机的地址信息。

适用于