inet_ntop函式 (ws2tcpip.h)
請參閱 inet_xtoy範例。
InetNtop 函式會將 IPv4 或 IPv6 因特網網路位址轉換成以因特網標準格式的字串。 此函式的 ANSI 版本 inet_ntop。
語法
PCSTR WSAAPI inet_ntop(
[in] INT Family,
[in] const VOID *pAddr,
[out] PSTR pStringBuf,
[in] size_t StringBufSize
);
參數
[in] Family
位址系列。
位址系列的可能值定義在 Ws2def.h 頭檔中。 請注意, Ws2def.h 頭文件會自動包含在 Winsock2.h 中,不應該直接使用。 請注意,AF_位址系列和PF_通訊協定系列常數的值 (相同,例如, AF_INET 和 PF_INET) ,因此可以使用任一個常數。
目前支援的值AF_INET和AF_INET6。
值 | 意義 |
---|---|
|
因特網通訊協定第 4 版 (IPv4) 位址系列。 指定此參數時,此函式會傳回IPv4位址字串。 |
|
因特網通訊協定第 6 版 (IPv6) 位址系列。 指定此參數時,此函式會傳回IPv6位址字串。 |
[in] pAddr
要轉換成字串之網路位元組中IP位址的指標。
當 Family 參數 AF_INET時, pAddr 參數必須指向具有 IPv4 位址轉換 的IN_ADDR 結構。
當 Family 參數 AF_INET6時, pAddr 參數必須指向具有 IPv6 位址轉換 的IN6_ADDR 結構。
[out] pStringBuf
緩衝區的指標,用來儲存IP位址的 NULL終止字串表示。
對於 IPv4 位址,此緩衝區的大小應該足以容納至少 16 個字元。
對於 IPv6 位址,此緩衝區應該足以容納至少 46 個字元。
[in] StringBufSize
在輸入時, pStringBuf 參數所指向緩衝區的長度,以字元為單位。
傳回值
如果沒有發生錯誤, InetNtop 函式會傳回指標,其中包含標準格式之IP位址的字串表示。
否則,會傳回 NULL 的值,並呼叫 來擷取特定的錯誤碼
適用於擴充錯誤資訊的 WSAGetLastError。
如果函式失敗, WSAGetLastError 傳回的擴充錯誤碼可以是下列其中一個值。
錯誤碼 | 意義 |
---|---|
不支援 Family 參數中指定的位址系列。 如果未AF_INET或AF_INET6指定 Family 參數,則會傳回此錯誤。 | |
|
無效的參數已傳遞至 函式。 如果在 pStringBuf 或 StringBufSize 參數中傳遞 NULL 指標為零,就會傳回此錯誤。 如果 pStringBuf 參數指向的緩衝區長度不足以接收 IP 位址的字串表示,也會傳回此錯誤。 |
備註
Windows Vista 和更新版本支援 InetNtop 函式。
InetNtop 函式提供與通訊協定無關的位址對字串轉譯。 InetNtop 函式會採用 pAddr 參數指定的因特網地址結構,並傳回代表 IP 位址的 NULL 終止字串。 雖然 inet_ntoa 函式只適用於 IPv4 位址, 但 InetNtop 函式適用於 IPv4 或 IPv6 位址。
此函式的 ANSI 版本 inet_ntop 如 RFC 2553 中所定義。 如需詳細資訊,請參閱 IETF 網站提供的 RFC 2553。
InetNtop 函式不需要載入 Windows 套接字 DLL 以執行 IP 位址到字串轉換。
如果指定的 Family 參數 AF_INET, 則 pAddr 參數必須指向具有要轉換之 IPv4 位址 的IN_ADDR 結構。 pStringBuf 參數所指向之緩衝區中所傳回的位址字串是以點符號十進位表示法表示法,如同 “192.168.16.0”,這是 dotted-decimal 表示法中 IPv4 位址的範例。
如果指定的 Family 參數 AF_INET6, 則 pAddr 參數必須指向具有要轉換之 IPv6 位址 的 IN6_ADDR 結構。 pStringBuf 參數所指向之緩衝區中傳回的位址字串是因特網標準格式。 基本字串表示是由 8 個十六進位數位所組成,並以冒號分隔。 連續零數位的字串會取代為雙冒號。 IPv6 位址的字串表示中只能有一個雙冒號。 如果位址是 IPv4 相容位址,則最後 32 位會以 IPv4 樣式的 dotted-octet 表示法表示。
如果 pStringBuf 參數指向的緩衝區長度不足以接收 IP 位址的字串表示, InetNtop 會傳回ERROR_INVALID_PARAMETER。
定義 UNICODE 或_UNICODE時,InetNtop 會定義為 InetNtopW,這是此函式的 Unicode 版本。 pStringBuf 參數會定義為 PSTR 數據類型。
未定義 UNICODE 或_UNICODE時, InetNtop 會定義為 InetNtopA,這是此函式的 ANSI 版本。 此函式的 ANSI 版本一律定義為 inet_ntop。 pStringBuf 參數會定義為 PWSTR 數據類型。
IN_ADDR結構定義於 Inaddr.h 頭檔中。
IN6_ADDR 結構定義於 In6addr.h 頭檔中。
在 Windows Vista 和更新版本上, RtlIpv4AddressToString 和 RtlIpv4AddressToStringEx 函式可用來將以 IN_ADDR 結構表示的 IPv4 位址轉換為因特網標準小數點表示法中 IPv4 位址的字元串表示法。 在 Windows Vista 和更新版本上, RtlIpv6AddressToString 和 RtlIpv6AddressToStringEx 函式可用來將以 IN6_ADDR 結構表示的 IPv6 位址轉換為 IPv6 位址的字串表示。 RtlIpv6AddressToStringEx 函式更有彈性,因為它也會以標準格式將 IPv6 位址、範圍標識符和埠轉換成 IPv6 字串。
Windows 8.1 和 Windows Server 2012 R2:Windows 8.1、Windows Server 2012 R2 和更新版本的 Windows 市集應用程式支援 InetNtopW 函式。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 8.1、Windows Vista [傳統型應用程式 |UWP 應用程式] |
最低支援的伺服器 | Windows Server 2008 [傳統型應用程式 |UWP 應用程式] |
目標平台 | Windows |
標頭 | ws2tcpip.h |
程式庫 | Ws2_32.lib |
Dll | Ws2_32.dll |