簡體   English   中英

'inet_addr':使用 inet_pton() 或 InetPton() 代替或定義 _WINSOCK_DEPRECATED_NO_WARNINGS

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

我正在使用 Visual Studio 2015 並嘗試編譯在我從 VS 2013 更新之前已經工作的代碼。

'inet_addr':使用 inet_pton() 或 InetPton() 代替或定義 _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");

它可以轉換為較新的InetPton ,如下所示:

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

_T宏可防止“ const char 與 PCWSTR 不兼容”錯誤。

可以使用InetPton函數將 ip 字符串轉換為in_addr結構。 它是這樣使用的:

InetPton(AF_INET, strIP, &ipv4addr)

您需要包含“Ws2tcpip.h”頭文件,使用庫“Ws2_32.lib”和DLL“Ws2_32.dll”。

你可以試試

#pragma warning(disable:4996) 

用於使用inet_addr()

確保在所有包含之前定義 _WINSOCK_DEPRECATED_NO_WARNINGS。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM