Dns.GetHostEntry 方法

定義

將主機名稱或 IP 位址解析至 IPHostEntry 執行個體。

多載

GetHostEntry(IPAddress)

將 IP 位址解析至 IPHostEntry 執行個體。

GetHostEntry(String)

將主機名稱或 IP 位址解析至 IPHostEntry 執行個體。

GetHostEntry(String, AddressFamily)

將主機名稱或 IP 位址解析至 IPHostEntry 執行個體。

GetHostEntry(IPAddress)

將 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

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 結果可供 參數使用,就可以傳回空 IPHostEntryaddress 實例。

Aliases這個方法不會填入傳回之實例的 IPHostEntry 屬性,而且一律為空白。

注意

當您在應用程式中啟用網路追蹤時,此成員會發出追蹤資訊。 如需詳細資訊,請參閱.NET Framework中的網路追蹤

適用於

GetHostEntry(String)

將主機名稱或 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

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 參數包含 AnyIPv6AnyArgumentException 也會傳回例外狀況。

方法 GetHostEntry 假設如果 IP 常值字串傳遞至 hostNameOrAddress 應用程式想要 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 常值做為屬性中 HostName FQDN (完整網域) 主機名稱。

方法 GetHostAddresses 對於 IP 常值有不同的行為。 如果上述步驟 #1 成功 (成功剖析為 IP 位址) ,則會立即傳回該位址作為結果。 在反向對應時不會嘗試。

如果本機電腦未安裝 IPv6,則會從 方法的結果 GetHostEntry 篩選 IPv6 位址。 因此,如果只有 IPv6 結果可供 .parameter 使用,就可以傳回空 IPHostEntryhostNameOrAddress 實例。

Aliases這個方法不會填入傳回之實例的 IPHostEntry 屬性,而且一律為空白。

注意

當您在應用程式中啟用網路追蹤時,此成員會發出追蹤資訊。 如需詳細資訊,請參閱.NET Framework中的網路追蹤

適用於

GetHostEntry(String, AddressFamily)

將主機名稱或 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

IPHostEntry實例,包含 中 hostNameOrAddress 指定之主機的位址資訊。

適用於