Поделиться через


Функция InetNtopW (ws2tcpip.h)

Функция InetNtop преобразует ip-адрес iPv4 или IPv6 в строку в стандартном формате Интернета. Версия ANSI этой функции inet_ntop.

Синтаксис

PCWSTR WSAAPI InetNtopW(
  [in]  INT        Family,
  [in]  const VOID *pAddr,
  [out] PWSTR      pStringBuf,
  [in]  size_t     StringBufSize
);

Параметры

[in] Family

Семейство адресов.

Возможные значения для семейства адресов определяются в файле заголовка Ws2def.h . Обратите внимание, что файл заголовка Ws2def.h автоматически включается в Winsock2.h и никогда не должен использоваться напрямую. Обратите внимание, что значения для семейства адресов AF_ и констант семейства протоколов PF_ идентичны (например, AF_INET и PF_INET), чтобы можно было использовать любую константу.

В настоящее время поддерживаются значения AF_INET и AF_INET6.

Ценность Meaning
AF_INET
2
Семейство адресов протокола Интернета версии 4 (IPv4). При указании этого параметра эта функция возвращает строку адреса IPv4.
AF_INET6
23
Семейство адресов протокола Интернета версии 6 (IPv6). Если этот параметр указан, эта функция возвращает строку адреса IPv6.

[in] pAddr

Указатель на IP-адрес в байтах сети для преобразования в строку.

Если параметр FamilyAF_INET, то параметр pAddr должен указывать на структуру IN_ADDR с адресом IPv4 для преобразования.

Если параметр "Семейство " AF_INET6, то параметр pAddr должен указывать на структуру IN6_ADDR с адресом IPv6 для преобразования.

[out] pStringBuf

Указатель на буфер, в котором хранится строковое представление IP-адреса, завершаемого значением NULL.

Для IPv4-адреса этот буфер должен быть достаточно большим, чтобы содержать не менее 16 символов.

Для IPv6-адреса этот буфер должен быть достаточно большим, чтобы содержать не менее 46 символов.

[in] StringBufSize

В входных данных длина буфера в символах, на которую указывает параметр pStringBuf .

Возвращаемое значение

Если ошибка не возникает, функция InetNtop возвращает указатель на буфер, содержащий строковое представление IP-адреса в стандартном формате.

В противном случае возвращается значение NULL , и можно получить определенный код ошибки путем вызова
WSAGetLastError для расширенных сведений об ошибке.

Если функция завершается ошибкой, расширенный код ошибки, возвращаемый WSAGetLastError , может быть одним из следующих значений.

Код ошибки Meaning
WSAEAFNOSUPPORT
Семейство адресов, указанное в параметре Family , не поддерживается. Эта ошибка возвращается, если указанный параметр family не был AF_INET или AF_INET6.
ERROR_INVALID_PARAMETER
Недопустимый параметр был передан функции. Эта ошибка возвращается, если указатель NULL передается в pStringBuf или параметре StringBufSize равно нулю. Эта ошибка также возвращается, если длина буфера, указываемая параметром pStringBuf , недостаточно велика, чтобы получить строковое представление IP-адреса.

Замечания

Функция InetNtop поддерживается в Windows Vista и более поздних версиях.

Функция InetNtop предоставляет преобразование адресов, независимых от протокола, в строку. Функция InetNtop принимает структуру ip-адресов, указанную параметром pAddr , и возвращает строку, завершающую значение NULL, представляющую IP-адрес. Хотя функция inet_ntoa работает только с IPv4-адресами, функция InetNtop работает с IPv4 или IPv6-адресами.

Версия ANSI этой функции inet_ntop , как определено в RFC 2553. Дополнительные сведения см. на веб-сайте IETF в RFC 2553.

Функция InetNtop не требует загрузки библиотеки DLL сокетов Windows для выполнения преобразования IP-адресов в строку.

Если указанный параметр family имеет значение AF_INET, то параметр pAddr должен указывать на структуру IN_ADDR с адресом IPv4 для преобразования. Строка адреса, возвращаемая в буфере, на которую указывает параметр pStringBuf , находится в точечной десятичной нотации, как в "192.168.16.0", пример адреса IPv4 в нотации с точками десятичной нотации.

Если указанный параметр "Семейство " AF_INET6, то параметр pAddr должен указывать на структуру IN6_ADDR с адресом IPv6 для преобразования. Строка адреса, возвращаемая в буфере, на которую указывает параметр pStringBuf , находится в стандартном формате Интернета. Базовое строковое представление состоит из 8 шестнадцатеричных чисел, разделенных двоеточиями. Строка последовательных нулевых чисел заменяется двойной двоеточием. В строковом представлении IPv6-адреса может быть только одна двойная двоеточие. Последние 32 бита представлены в IPv4-style dotted-octet нотации, если адрес является IPv4-совместимым адресом.

Если длина буфера, на которую указывает параметр pStringBuf , недостаточно велика, чтобы получить строковое представление IP-адреса, InetNtop возвращает ERROR_INVALID_PARAMETER.

При определении ЮНИКОДа или _UNICODE inetNtop определяется как InetNtopW, версия Юникода этой функции. Параметр pStringBuf определяется для типа данных PWSTR .

Если юникод или _UNICODE не определен, InetNtop определяется в InetNtopA, версия ANSI этой функции. Версия ANSI этой функции всегда определяется как inet_ntop. Параметр pStringBuf определяется для типа данных PSTR .

Структура IN_ADDR определена в файле заголовка Inaddr.h.

Структура IN6_ADDR определена в файле заголовка In6addr.h .

В Windows Vista и более поздних версиях функции RtlIpv4AddressToString и RtlIpv4AddressToStringEx можно использовать для преобразования IPv4-адреса, представленного в виде IN_ADDR структуры в строковое представление IPv4-адреса в стандартной десятичной нотации Интернета. В Windows Vista и более поздних версиях функции RtlIpv6AddressToString и RtlIpv6AddressToStringEx можно использовать для преобразования IPv6-адреса, представленного в виде IN6_ADDR структуры в строковое представление IPv6-адреса. Функция RtlIpv6AddressToStringEx является более гибкой, так как она также преобразует IPv6-адрес, идентификатор области и порт в строку IPv6 в стандартном формате.

Windows 8.1 и Windows Server 2012 R2: функция InetNtopW поддерживается для приложений Магазина Windows в Windows 8.1, Windows Server 2012 R2 и более поздних версий.

Требования

Требование Ценность
Минимальный поддерживаемый клиент Windows 8.1, Windows Vista [классические приложения | Приложения UWP]
минимальный поддерживаемый сервер Windows Server 2008 [классические приложения | Приложения UWP]
целевая платформа Виндоус
Header ws2tcpip.h
Library Ws2_32.lib
DLL Ws2_32.dll

См. также

IN6_ADDR

IN_ADDR

InetPton

RtlIpv4AddressToString

RtlIpv4AddressToStringEx

RtlIpv4StringToAddress

RtlIpv4StringToAddressEx

RtlIpv6AddressToString

RtlIpv6AddressToStringEx

RtlIpv6StringToAddress

RtlIpv6StringToAddressEx

inet_addr

inet_ntoa