PCSTR WSAAPI inet_ntop( [in] INT Family, [in] const VOID *pAddr, [out] PSTR pStringBuf, [in] size_t StringBufSize );
InetNtop功能用于将IPv4或IPv6 Internet网络地址转换为Internet标准格式的字符串。这个函数的ANSI版本是inet_ntop。
int inet_pton(int af, const char * restrict src, void * restrict dst);
InetPton函数将IPv4或IPv6 Internet网络地址的标准文本表示形式转换为二进制数字形式。该函数的ANSI版本是inet_pton。
inet_pton是inet_addr的扩展,支持的多地址族有下列:
af = AF_INET
src为指向字符型的地址,即ASCII的地址的首地址(ddd.ddd.ddd.ddd格式的),函数将该地址转换为in_addr的结构体,并复制在*dst中
af = AF_INET6
src为指向IPV6的地址,函数将该地址转换为in6_addr的结构体,并复制在*dst中
如果函数出错将返回一个负值,并将errno设置为EAFNOSUPPORT,如果参数af指定的地址族和src格式不对,函数将返回0。
header ws2tcpip.h
lib ws2_32.lib
DLL ws2_32.dll
示例
#include#include #pragma comment(lib,ws2_32.lib) int main() { char *ipv6 = "2409:8a1e:6a62:e440:4f:bbe7:a27e:28e8"; struct in6_addr ip6; char test[64] = {0}; inet_pton(AF_INET6, ipv6, &ip6); printf("%x-%x-%x-%xn", ip6.__u6_addr.__u6_addr32[0], ip6.__u6_addr.__u6_addr32[1], ip6.__u6_addr.__u6_addr32[2], ip6.__u6_addr.__u6_addr32[3]); // ip6.s_addr = 0x00001e8a; inet_ntop(AF_INET6, &ip6, test, 64); printf("test:%sn", test); char *ipv4 = "192.168.1.1"; struct in_addr ip4; inet_pton(AF_INET, ipv4, &ip4); printf("%xn", ip4.s_addr); return 0; }



