функция 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.
Значение | Значение |
---|---|
|
Семейство адресов IPv4. Если этот параметр указан, параметр pszAddrString должен указывать на текстовое представление IPv4-адреса, а параметр pAddrBuf возвращает указатель на структуру IN_ADDR , представляющую IPv4-адрес. |
|
Семейство адресов 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 , может иметь одно из следующих значений.
Код ошибки | Значение |
---|---|
Семейство адресов, указанное в параметре Family , не поддерживается. Эта ошибка возвращается, если указанный параметр Family не был AF_INET или AF_INET6. | |
Параметры 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 |