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


функция inet_pton (ws2tcpip.h)

Функция InetPton преобразует сетевой адрес IPv4 или IPv6 в стандартной форме представления текста в числовую двоичную форму. Версия ANSI этой функции inet_pton.

Синтаксис

INT WSAAPI inet_pton(
  [in]  INT   Family,
  [in]  PCSTR pszAddrString,
  [out] PVOID pAddrBuf
);

Параметры

[in] Family

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

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

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

Значение Значение
AF_INET
2
Семейство адресов IPv4. Если этот параметр указан, параметр pszAddrString должен указывать на текстовое представление IPv4-адреса, а параметр pAddrBuf возвращает указатель на структуру IN_ADDR , представляющую IPv4-адрес.
AF_INET6
23
Семейство адресов IPv6. Если этот параметр указан, параметр pszAddrString должен указывать на текстовое представление IPv6-адреса, а параметр pAddrBuf возвращает указатель на структуру IN6_ADDR , представляющую IPv6-адрес.

[in] pszAddrString

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

Если параметр FamilyAF_INET, параметр pszAddrString должен указывать на текстовое представление IPv4-адреса в стандартной точечной десятичной нотации.

Если параметр Familyимеет AF_INET6, параметр pszAddrString должен указывать на текстовое представление IPv6-адреса в стандартной нотации.

[out] pAddrBuf

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

Если параметр FamilyAF_INET, этот буфер должен быть достаточно большим, чтобы вместить IN_ADDR структуру.

Если параметр Familyимеет значение AF_INET6, этот буфер должен быть достаточно большим, чтобы вместить IN6_ADDR структуру.

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

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

Функция InetPton возвращает значение 0, если параметр pAddrBuf указывает на строку, которая не является допустимой строкой IPv4 с точками и допустимой строкой IPv6-адреса. В противном случае возвращается значение -1, а определенный код ошибки можно получить путем вызова
WSAGetLastError для расширенных сведений об ошибке.

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

Код ошибки Значение
WSAEAFNOSUPPORT
Семейство адресов, указанное в параметре Family , не поддерживается. Эта ошибка возвращается, если указанный параметр Family не был AF_INET или AF_INET6.
WSAEFAULT
Параметры pszAddrString или pAddrBuf имеют значение NULL или не являются частью адресного пространства пользователя.

Комментарии

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

Функция InetPton обеспечивает независимое от протокола преобразование интернет-сетевого адреса в стандартной форме представления текста в числовую двоичную форму. Функция InetPton принимает текстовое представление интернет-адреса, на который указывает параметр pszAddrString , и возвращает указатель на числовой двоичный IP-адрес в параметре pAddrBuf . Хотя функция inet_addr работает только со строками IPv4-адресов, функция InetPton работает со строками адресов IPv4 или IPv6.

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

Функция InetPton не требует загрузки библиотеки DLL Сокетов Windows для преобразования текстовой строки, представляющей IP-адрес, в числовой двоичный IP-адрес.

Если параметр Family указан AF_INET, то параметр pszAddrString должен указывать текстовую строку IPv4-адреса в пунктирной десятичной нотации, как в "192.168.16.0", примере IPv4-адреса в пунктирной десятичной нотации.

Если параметр Family указан AF_INET6, параметр pszAddrString должен указывать текстовую строку IPv6-адреса в стандартном для Интернета формате. Базовое строковое представление состоит из 8 шестнадцатеричных чисел, разделенных двоеточиями. Строка последовательных нулевых чисел может быть заменена двойной двоеточием. В строковом представлении IPv6-адреса может быть только один двойной двоеточие. Последние 32 бита могут быть представлены в нотации iPv4-точечных октетов, если адрес является адресом, совместимым с IPv4.

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

Если юникод или _UNICODE не определены, InetPton определяется как InetPtonA, версия ANSI этой функции. Версия ANSI этой функции всегда определяется как inet_pton. Параметр pszAddrString определяется для типа данных PCSTR .

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

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

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

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

Требования

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

См. также раздел

IN6_ADDR

IN_ADDR

InetNtop

RtlIpv4AddressToString

RtlIpv4AddressToStringEx

RtlIpv4StringToAddress

RtlIpv4StringToAddressEx

RtlIpv6AddressToString

RtlIpv6AddressToStringEx

RtlIpv6StringToAddress

RtlIpv6StringToAddressEx

inet_addr

inet_ntoa