socket编程inet_ntoa()函数ip类型转换时报错 C4996 'inet_ntoa': Use inet_ntop() or InetNtop() instead

在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>即可。
  1. 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;
	}


版权声明:本文为qq_43399909原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。