web-dev-qa-db-ja.com

'inet_addr':代わりにinet_pton()またはInetPton()を使用するか、_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());

上記の関数を使用しようとしましたが、定義されていませんでした。多くの異なる場所でマクロを定義しようとしましたが、何も起こりませんでした。別のスレッドは、WinSock2の代わりにWs2tcpip.hを組み込み、Ws2_32.libを追加する必要があると言っています。既にライブラリが追加されており、インクルードを使用しても何も起こりませんでした。何が起こっている?!

13
The Count

Ip文字列は、 I_netPton 関数を使用して in_addr 構造に変換できます。次のように使用されます。

InetPton(AF_INET, strIP, &ipv4addr)

「Ws2tcpip.h」ヘッダーファイルを含める必要があります。ライブラリ「Ws2_32.lib」およびDLL "Ws2_32.dll"を使用してください。

17
Florian Haupt

変換を明確にするためです。この例のように、非推奨の 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との互換性がない」エラーを防ぎます。

13
Nagev

あなたが試すことができます

_#pragma warning(disable:4996) 
_

inet_addr()を使用するため。

6
Razin Bashar

すべてのインクルードの前に、必ず_WINSOCK_DEPRECATED_NO_WARNINGSを定義してください。

2
J CH