"inet addr": вместо этого используйте inet pton() или InetPton() или определите WINSOCK устаревшие предупреждения
Я использую 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.ч вместо В winsock2 и добавить ws2_32 в.движение за освобождение. У меня уже есть библиотека, и когда я использовал include, ничего не произошло. Что происходит?!
4 ответов
строка ip может быть преобразована в для структуры InetPton. Он используется следующим образом:
InetPton(AF_INET, strIP, &ipv4addr)
вам нужно включить " Ws2tcpip.H "файл заголовка, используйте библиотеку" Ws2_32.lib "и DLL" Ws2_32.файл DLL."
просто чтобы сделать преобразование ясно. Предположим, у вас есть код, использующий устаревший сокеты 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);
на ІТ макрос предотвращает "const char несовместимо с PCWSTR" ошибка.