2016-04-18 7 views
8

Ich bin mit Visual Studio 2015 und versuchen, Code zu kompilieren, der gearbeitet hat, bevor ich von VS aktualisiert 2013.'inet_addr': Verwenden Sie inet_pton() oder InetPton() statt oder definieren _WINSOCK_DEPRECATED_NO_WARNINGS

'inet_addr' : Verwendung inet_pton() oder InetPton() statt oder _WINSOCK_DEPRECATED_NO_WARNINGS

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

I die genannten Funktionen zu benutzen versucht, aber sie waren nicht definierten definieren. Ich habe versucht, das Makro an vielen verschiedenen Stellen zu definieren, aber es ist nichts passiert. Ein anderer Thread sagte, dass ich Ws2tcpip.h anstelle von WinSock2 & Ws2_32.lib hinzufügen sollte. Ich habe bereits die Bibliothek hinzugefügt, und als ich das Include benutzte, passierte nichts. Was ist los?!

+0

Könnte es sein, dass dies ein Microsoft-Geschäftsmodell ist, um nicht rückwärts kompatibel zwischen verschiedenen Visual Studios zu sein? Kommt aus Python ist dies nur verrückt –

Antwort

8

Die IP-Zeichenfolge kann mit der InetPton-Funktion in die Struktur in_addr konvertiert werden. Es wird wie folgt verwendet:

InetPton(AF_INET, strIP, &ipv4addr) 

Sie müssen die "Ws2tcpip.h" Header-Datei aufgenommen werden, verwenden Sie die Bibliothek "Ws2_32.lib" und DLL "Ws2_32.dll".

0

Stellen Sie sicher, dass Sie _WINSOCK_DEPRECATED_NO_WARNINGS vor allen Include definieren.

+0

Dies sollte im Kommentar Teil sein. –

+0

Ich stimme dem Kommentar von @ V-rund Puro-hits nicht zu. Das Definieren von _WINSOCK_DEPRECATED_NO_WARNINGS ist in der Tat der einfachste Weg, um es zum Laufen zu bringen. Es ist keine Änderung des Quellcodes erforderlich, keine anderen Bibliotheken werden benötigt. –

3

können Sie versuchen,

#pragma warning (disable: 4996)

für die Verwendung von inet_addr().

3

Nur um die Konvertierung zu verdeutlichen. Angenommen, Sie Code haben mit der veralteten inet_addr wie in diesem Beispiel:

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

Es auf die neuere umgewandelt werden könnte InetPton wie folgt:

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

Das _T Makro verhindert, dass die "const char unvereinbar mit PCWSTR "Fehler.