Ping功能inet_ntop/inet_ntoa/InetNtopA/InetNtop/InetNtopW相关转换及IP CString与DWORD/char*转换

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值