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 結果可供 參數使用,就可以傳回空 IPHostEntry 的 address
實例。
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
參數包含 Any 或 IPv6Any , ArgumentException 也會傳回例外狀況。
方法 GetHostEntry 假設如果 IP 常值字串傳遞至 hostNameOrAddress
應用程式想要 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 常值做為屬性中 HostName FQDN (完整網域) 主機名稱。
方法 GetHostAddresses 對於 IP 常值有不同的行為。 如果上述步驟 #1 成功 (成功剖析為 IP 位址) ,則會立即傳回該位址作為結果。 在反向對應時不會嘗試。
如果本機電腦未安裝 IPv6,則會從 方法的結果 GetHostEntry 篩選 IPv6 位址。 因此,如果只有 IPv6 結果可供 .parameter 使用,就可以取回空 IPHostEntry 的 hostNameOrAddress
實例。
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
指定之主機的位址資訊。
適用於
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應