'inet_addr':改用inet_pton()或InetPton()或定义_WINSOCK_DEPRECATED_NO_WARNINGS

'inet_addr': Use inet_pton() or InetPton() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS

本文关键字:inet WINSOCK NO WARNINGS 定义 DEPRECATED pton addr 改用 InetPton      更新时间:2023-10-16

我正在使用Visual Studio 2015,并试图编译在从VS 2013更新之前已经工作的代码。

"inet_addr":改用inet_pton()或InetButton(),或定义_WINSOCK_DEPRECATED_NO_WARNINGS

在此代码中:

partner.sin_addr.s_addr = inet_addr(ip.c_str());

我试图使用上面提到的函数,但它们没有定义。我试图在许多不同的地方定义宏,但什么也没发生。另一个线程说我应该包含Ws2tcpip.h而不是WinSock2&添加Ws2_32.lib。我已经添加了库,当我使用include时,没有发生任何事情。发生了什么事?!

只是为了明确转换。假设您有使用不推荐使用的inet_addr的代码,如本例所示:

RecvAddr.sin_addr.s_addr = inet_addr("192.168.1.1");

它可以转换为更新的InetButton,如下所示:

InetPton(AF_INET, _T("192.168.1.1"), &RecvAddr.sin_addr.s_addr);

_T宏可防止出现"const char与PCWSTR不兼容"错误。

可以使用InetButton函数将ip字符串转换为in_addr结构。它是这样使用的:

InetPton(AF_INET, strIP, &ipv4addr)

您需要包含"Ws2tcpip.h"头文件,使用库"Ws2_32.lib"和DLL"Ws2.32.DLL"。

您可以尝试

#pragma warning(disable:4996) 

用于使用CCD_ 1。

确保在所有包含之前定义_WINSOCK_DEPRECATED_NO_WARNINGS。