Ping功能inet_ntop/inet_ntoa/InetNtopA/InetNtop/InetNtopW相关转换及IP CString与DWORD/char*转换
InetNtopW函数(ws2tcpip.h)
该 InetNtop功能的IPv4或IPv6互联网网络地址转换成互联网标准格式的字符串。该函数的ANSI版本是 inet_ntop。
句法
C ++
PCWSTR WSAAPI InetNtopW(
INT Family,
const VOID *pAddr,
PWSTR pStringBuf,
size_t StringBufSize
);
参量
Family
地址族。
地址族的可能值在Ws2def.h头文件中定义。请注意,Ws2def.h头文件自动包含在Winsock2.h中,并且绝对不能直接使用。请注意,AF_地址族常量和PF_协议族常量的值是相同的(例如AF_INET和PF_INET),因此可以使用任何一个常量。
当前支持的值为AF_INET和AF_INET6。
参量
值 含义
AF_INET
2
Internet协议版本4(IPv4)地址族。指定此参数后,此函数将返回一个IPv4地址字符串。
AF_INET6
23
Internet协议版本6(IPv6)地址族。指定此参数后,此函数将返回IPv6地址字符串。
pAddr
指向网络字节中要转换为字符串的IP地址的指针。
当Family参数为AF_INET时,pAddr参数必须指向具有要转换的IPv4地址的IN_ADDR结构。
当Family参数为AF_INET6时,pAddr参数必须指向具有要转换的IPv6地址的IN6_ADDR结构。
pStringBuf
指向缓冲区的指针,该缓冲区用于存储IP地址的以NULL结尾的字符串表示形式。
对于IPv4地址,此缓冲区应足够大以容纳至少16个字符。
对于IPv6地址,此缓冲区应足够大以容纳至少46个字符。
StringBufSize
输入时,由pStringBuf参数指向的缓冲区的长度(以字符为单位)。
返回值
如果没有发生错误,则 InetNtop函数将返回指向缓冲区的指针,该缓冲区包含标准格式的IP地址的字符串表示形式。
否则,将返回NULL值,并且可以通过调用
WSAGetLastError获取扩展的错误信息来检索特定的错误代码。
如果函数失败,则WSAGetLastError返回的扩展错误代码可以是以下值之一。
返回值
错误代码 含义
WSAEAFNOS支持
不支持 在Family参数中指定的地址系列。如果指定的Family参数不是AF_INET或AF_INET6,则返回此错误。
ERROR_INVALID_PARAMETER
无效的参数传递给该函数。如果在pStringBuf中传递了NULL指针或 StringBufSize参数为零,则返回此错误。如果pStringBuf参数所指向的缓冲区的长度不足以接收IP地址的字符串表示形式,也会返回此错误。
备注
该 InetNtop功能支持Windows Vista和更高版本。
所述 InetNtop功能提供了一个协议无关的地址到字符串翻译。该 InetNtop功能需要由指定的互联网地址结构PADDR参数和返回NULL表示IP地址封端的字符串。尽管inet_ntoa函数仅适用于IPv4地址,但是InetNtop函数适用于IPv4或IPv6地址。
该函数的ANSI版本inet_ntop在RFC 2553的详细信息定义,请参见RFC 2553可在IETF网站。
该 InetNtop功能不需要Windows套接字DLL加载到执行IP地址字符串转换。
如果指定的Family参数为AF_INET,则pAddr参数必须指向具有要转换的IPv4地址的IN_ADDR结构。pStringBuf参数所指向的缓冲区中返回的地址字符串以点分十进制表示,如“ 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参数定义到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地址转换为Internet标准的点分十进制表示法的字符串表示形式。在Windows Vista和更高版本上,可以使用RtlIpv6AddressToString和RtlIpv6AddressToStringEx函数将以IN6_ADDR结构表示的IPv6地址转换为IPv6地址的字符串表示形式。该RtlIpv6AddressToStringEx功能更加灵活,因为它也IPv6地址,镜体ID,和端口转换为在标准格式的IPv6的字符串。
Windows 8.1和Windows Server 2012 R2: Windows 8.1,Windows Server 2012 R2和更高版本上的Windows Store应用程序支持InetNtopW功能。
要求
要求
最低支持的客户 Windows 8.1,Windows Vista [桌面应用程序| UWP应用]
最低支持的服务器 Windows Server 2008 [桌面应用程序| UWP应用]
目标平台 视窗
标头 ws2tcpip.h
图书馆 Ws2_32.lib
动态链接库 Ws2_32.dll
也可以看看
IN6_ADDR
IN_ADDR
InetPton
RtlIpv4AddressToString
RtlIpv4AddressToStringEx
RtlIpv4StringToAddress
RtlIpv4StringToAddressEx
RtlIpv6AddressToString
RtlIpv6AddressToStringEx
RtlIpv6StringToAddress
RtlIpv6StringToAddressEx
inet_addr
inet_ntoa