InetNtopW 函数 (ws2tcpip.h)

InetNtop 函数将 IPv4 或 IPv6 Internet 网络地址转换为采用 Internet 标准格式的字符串。 此函数的 ANSI 版本 inet_ntop

Syntax

PCWSTR WSAAPI InetNtopW(
  [in]  INT        Family,
  [in]  const VOID *pAddr,
  [out] PWSTR      pStringBuf,
  [in]  size_t     StringBufSize
);

参数

[in] Family

地址系列。

地址系列的可能值在 Ws2def.h 头文件中定义。 请注意, Ws2def.h 头文件自动包含在 Winsock2.h 中,不应直接使用。 请注意,AF_地址系列和PF_协议系列常量的值相同(例如 ,AF_INETPF_INET),因此可以使用任一常量。

当前支持的值 是AF_INETAF_INET6

价值 Meaning
AF_INET
2
Internet 协议版本 4 (IPv4) 地址系列。 指定此参数后,此函数将返回 IPv4 地址字符串。
AF_INET6
23
Internet 协议版本 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 值,可以通过调用 <a0/a0> 来检索特定错误代码
WSAGetLastError 用于扩展错误信息。

如果函数失败, WSAGetLastError 返回的扩展错误代码可以是以下值之一。

错误代码 Meaning
WSAEAFNOSUPPORT
不支持在 Family 参数中指定的地址系列。 如果未AF_INETAF_INET6指定 Family 参数,则返回此错误。
ERROR_INVALID_PARAMETER
将无效参数传递给函数。 如果在 pStringBuf 中传递 NULL 指针或 StringBufSize 参数为零,则返回此错误。 如果 pStringBuf 参数指向的缓冲区长度不足以接收 IP 地址的字符串表示形式,也会返回此错误。

注解

Windows Vista 及更高版本支持 InetNtop 函数。

InetNtop 函数提供与协议无关的地址到字符串转换。 InetNtop 函数采用 pAddr 参数指定的 Internet 地址结构,并返回表示 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 参数指向的缓冲区中返回的地址字符串采用 dotted-decimal 表示法,如“192.168.16.0”(以点符号表示法表示 IPv4 地址的示例)。

如果指定的 Family 参数 AF_INET6则 pAddr 参数必须指向具有要转换的 IPv6 地址 的IN6_ADDR 结构。 pStringBuf 参数指向的缓冲区中返回的地址字符串采用 Internet 标准格式。 基本字符串表示形式由由冒号分隔的 8 个十六进制数字组成。 连续零个数字的字符串将替换为双冒号。 IPv6 地址的字符串表示形式中只能有一个双冒号。 如果地址是 IPv4 兼容的地址,则最后 32 位以 IPv4 样式的点八位表示法表示。

如果 pStringBuf 参数指向的缓冲区长度不够大,无法接收 IP 地址的字符串表示形式, InetNtop 将返回ERROR_INVALID_PARAMETER。

定义 UNICODE 或_UNICODE时, InetNtop 定义为 InetNtopW,这是此函数的 Unicode 版本。 pStringBuf 参数定义为 PWSTR 数据类型。

如果未定义 UNICODE 或 _UNICODE,InetNtop 将定义为 InetNtopA,这是此函数的 ANSI 版本。 此函数的 ANSI 版本始终定义为 inet_ntoppStringBuf 参数定义为 PSTR 数据类型。

IN_ADDR结构在 Inaddr.h 头文件中定义。

IN6_ADDR结构在 In6addr.h 头文件中定义。

在 Windows Vista 及更高版本中, RtlIpv4AddressToStringRtlIpv4AddressToStringEx 函数可用于将表示为 IN_ADDR 结构的 IPv4 地址转换为 Internet 标准点小数表示法中 IPv4 地址的字符串表示形式。 在 Windows Vista 及更高版本上, RtlIpv6AddressToStringRtlIpv6AddressToStringEx 函数可用于将表示为 IN6_ADDR 结构的 IPv6 地址转换为 IPv6 地址的字符串表示形式。 RtlIpv6AddressToStringEx 函数更加灵活,因为它还会以标准格式将 IPv6 地址、范围 ID 和端口转换为 IPv6 字符串。

Windows 8.1Windows Server 2012 R2:Windows 8.1、Windows Server 2012 R2 及更高版本的 Windows 应用商店应用支持 InetNtopW 函数。

要求

Requirement 价值
最低支持的客户端 Windows 8.1、Windows Vista [桌面应用 |UWP 应用]
支持的最低服务器 Windows Server 2008 [桌面应用 |UWP 应用]
目标平台 Windows操作系统
Header ws2tcpip.h
Library Ws2_32.lib
DLL Ws2_32.dll

另请参阅

IN6_ADDR

IN_ADDR

InetPton

RtlIpv4AddressToString

RtlIpv4AddressToStringEx

RtlIpv4StringToAddress

RtlIpv4StringToAddressEx

RtlIpv6AddressToString

RtlIpv6AddressToStringEx

RtlIpv6StringToAddress

RtlIpv6StringToAddressEx

inet_addr

inet_ntoa