IPV6出现之后,在windows平台,最好是用随IPV6而出的新函数实现IP地址的字符串形式与整数互换。这些新函数是InetPton和InetNtop。
1 InetPton()
作用:该函数实现字符串到整数的转换。
原型:INT InetPton(INT Family, PCWST pszAddrString, PVOID pAddrBuf);
参数:family参数既可以是AF_INET(ipv4)也可以是AF_INET6(ipv6)。如果,以不被支持的地址族作为family参数,这个函数都返回一个错误,并将errno置为EAFNOSUPPORT.
strptr 存放IP地址的字符串
addrptr 存放IP地址的整数的指针
返回:若成功则为1,若输入不是有效的表达式则为0,若出错则为-1
例子:
ULONG address;
InetPton(AF_INET, "192.168.1.1", &address);
2 InetNtop()
作用:该函数实现整数到字符串的转换。
原型:PCWST InetNtop(INT Family, const void * pAddr, PWSTR pStringBuf, size_t StringBufSize);
参数:family参数既可以是AF_INET(ipv4)也可以是AF_INET6(ipv6)。如果,以不被支持的地址族作为family参数,这个函数都返回一个错误,并将errno置为EAFNOSUPPORT.
pAddr 存放IP地址的整数的指针,
pStringBuf 存放IP地址的字符串,
StringBufSize 字符串的长度
返回:存放IP地址的指针。如果StringBufSize太小,不足以容纳表达式结果,那么返回一个空指针,并置为errno为ENOSPC。
例子:
ULONG address = 。。。;
wchar_t ip[64];
InetNtop(AF_INET, &address, ip, 64);
原文地址:https://www.cnblogs.com/wxxujian/p/12684379.html