在Windows10平台socket编程时使用inet_ntoa()函数时报错:
错误C4996 'inet_ntoa': Use inet_ntop() or InetNtop()
instead or define dd0()()_WINSOCK_DEPRECATED_NO_WARNIN
原因:
inet_ntoa()在Windows10平台vs中已被弃用,提示我们用inet_ntop() or InetNtop(),inet_ntop()
函数的头文件是Ws2tcpip.h,因此我们只需要包含头文件#include <WS2tcpip.h>即可。
- inet_pton函数
函数原型
INT WSAAPI InetPton(
In INT Family,
In PCTSTR pszAddrString,
Out PVOID pAddrBuf
);
将点分十进制串转换成网络字节序二进制值,此函数对IPv4地址和IPv6地址都能处理。
第一个参数可以是AF_INET或AF_INET6:
第二个参数是一个指向点分十进制串的指针:
第三个参数是一个指向转换后的网络字节序的二进制值的指针。
#include <iostream>
#include <WS2tcpip.h>
#include <WinSock2.h>
#pragma comment(lib,"Ws2_32.lib")
int main()
{
WSADATA ws_adata;
WORD w_Version = MAKEWORD(2, 2);
if (WSAStartup(w_Version, &ws_adata)) {
std::cout << "WSAStartup fail!\n";
}
in_addr addr;
if (!inet_pton(AF_INET, "192.168.1.15", &addr.S_un.S_addr)) {
std::cout << "inet_pton fail!\n"; // inet_pton 返回1转换成功,0失败
}
return 1;
}