Dns.GetHostEntry 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
將主機名稱或 IP 位址解析至 IPHostEntry 執行個體。
多載
GetHostEntry(IPAddress) |
將 IP 位址解析至 IPHostEntry 執行個體。 |
GetHostEntry(String) |
將主機名稱或 IP 位址解析至 IPHostEntry 執行個體。 |
GetHostEntry(String, AddressFamily) |
將主機名稱或 IP 位址解析至 IPHostEntry 執行個體。 |
GetHostEntry(IPAddress)
- 來源:
- Dns.cs
- 來源:
- Dns.cs
- 來源:
- 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)
- 來源:
- Dns.cs
- 來源:
- Dns.cs
- 來源:
- 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 Sockets 錯誤WSAHOST_NOT_FOUND) 例外状况。 如果 DNS 伺服器沒有回應,則可以傳回此例外狀況。 如果名稱不是官方主機名或別名,或在查詢的資料庫 () 中找不到此例外狀況,也可以傳回此例外狀況。
如果 hostNameOrAddress
參數包含 或 IPv6Any,ArgumentException也會傳回例外狀況Any。
方法 GetHostEntry 會假設如果IP常值字串傳遞至 hostNameOrAddress
應用程式想要 IPHostEntry 以所有屬性集傳回的實例的參數中。 這些屬性包括 AddressList、 Aliases與 HostName。 因此,方法的 GetHostEntry 實作會在傳遞IP字串常值時顯示下列行為:
方法會嘗試剖析位址。
hostNameOrAddress
如果參數包含合法的IP字串常值,則第一個階段會成功。嘗試使用IP字串常值的IP位址進行反向對應,以取得主機名。 此結果會設定為 HostName 屬性。
此反向對應中的主機名會再次用來取得與名稱相關聯的所有可能IP位址,並設定為 AddressList 屬性。
針對 IPv4 字串常值,上述三個步驟都可能會成功。 但是,實際屬於不同主機的 IPv4 位址的過時 DNS 記錄可能會傳回。 這可能會導致步驟 #3 失敗並擲回例外狀況, (IPv4 位址有 DNS PTR 記錄,但沒有 IPv4 位址的 DNS A 記錄) 。
針對 IPv6,上述步驟 #2 可能會失敗,因為大部分的 IPv6 部署不會註冊 IPv6 位址的反向 (PTR) 記錄。 因此,這個方法可能會傳回字串 IPv6 常值作為屬性中 HostName 完整網域 (FQDN) 主機名。
方法 GetHostAddresses 對於IP常值有不同的行為。 如果上述步驟 #1 成功 (成功剖析為IP位址) ,則會立即傳回該位址作為結果。 反向對應不會嘗試。
如果本機計算機未安裝 IPv6,則會從 方法的結果 GetHostEntry 篩選 IPv6 位址。 因此,如果只有 IPv6 結果可供 hostNameOrAddress
.parameter 使用,就可以傳回空IPHostEntry的實例。
Aliases這個方法不會填入傳回之IPHostEntry實例的 屬性,而且一律是空的。
注意
當您在應用程式中啟用網路追蹤時,此成員會發出追蹤資訊。 如需詳細資訊,請參閱 .NET Framework 中的網路追蹤。
適用於
GetHostEntry(String, AddressFamily)
- 來源:
- Dns.cs
- 來源:
- Dns.cs
- 來源:
- 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
指定之主機的地址資訊。