Dns.GetHostEntry 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
将主机名或 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
中指定的主机的地址信息。
例外
address
为 null
。
解析 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
参数包含 Any 或 IPv6Any,则也会返回异常。
方法 GetHostEntry 假定如果在 参数中 hostNameOrAddress
传递 IP 文本字符串,则应用程序希望 IPHostEntry 返回具有所有属性集的实例。 这些属性包括 AddressList、 Aliases和 HostName。 因此,当传递 IP 字符串文本时, GetHostEntry 方法的实现表现出以下行为:
方法尝试分析地址。
hostNameOrAddress
如果 参数包含合法的 IP 字符串文本,则第一阶段成功。尝试使用 IP 字符串文本的 IP 地址进行反向查找以获取主机名。 此结果设置为 HostName 属性。
此反向查找中的主机名再次用于获取与名称关联的所有可能的 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
主机的地址信息。