Spec-Zone.ru › Qt 5.15

Класс QHostAddress

Класс QHostAddress предоставляет IP-адрес. Подробнее...

Заголовок: #include <QHostAddress>
qmake: QT += network
  • Список всех членов, включая наследуемые

Открытые типы

флаги ConversionMode
перечисление ConversionModeFlag { StrictConversion, ConvertV4MappedToIPv4, ConvertV4CompatToIPv4, ConvertLocalHost, ConvertUnspecifiedAddress, TolerantConversion }
перечисление SpecialAddress { Null, LocalHost, LocalHostIPv6, Broadcast, AnyIPv4, …, Any }

Открытые функции

QHostAddress(QHostAddress::SpecialAddress address)
QHostAddress(const QHostAddress &address)
QHostAddress(const QString &address)
QHostAddress(const sockaddr *sockaddr)
QHostAddress(const Q_IPV6ADDR &ip6Addr)
QHostAddress(const quint8 *ip6Addr)
QHostAddress(quint8 *ip6Addr)
QHostAddress(quint32 ip4Addr)
QHostAddress()
QHostAddress & operator=(const QString &address)
QHostAddress & operator=(const QHostAddress &address)
~QHostAddress()
void clear()
bool isBroadcast() const
bool isEqual(const QHostAddress &other, QHostAddress::ConversionMode mode = TolerantConversion) const
bool isGlobal() const
bool isInSubnet(const QHostAddress &subnet, int netmask) const
bool isInSubnet(const QPair<QHostAddress, int> &subnet) const
bool isLinkLocal() const
bool isLoopback() const
bool isMulticast() const
bool isNull() const
bool isSiteLocal() const
bool isUniqueLocalUnicast() const
QAbstractSocket::NetworkLayerProtocol protocol() const
QString scopeId() const
void setAddress(quint32 ip4Addr)
void setAddress(quint8 *ip6Addr)
void setAddress(const quint8 *ip6Addr)
void setAddress(const Q_IPV6ADDR &ip6Addr)
void setAddress(const sockaddr *sockaddr)
bool setAddress(const QString &address)
void setAddress(QHostAddress::SpecialAddress address)
void setScopeId(const QString &id)
void swap(QHostAddress &other)
quint32 toIPv4Address() const
quint32 toIPv4Address(bool *ok) const
Q_IPV6ADDR toIPv6Address() const
QString toString() const
bool operator!=(const QHostAddress &other) const
bool operator!=(QHostAddress::SpecialAddress other) const
QHostAddress & operator=(QHostAddress::SpecialAddress address)
bool operator==(const QHostAddress &other) const
bool operator==(QHostAddress::SpecialAddress other) const

Статические публичные члены

QPair<QHostAddress, int> parseSubnet(const QString &subnet)

Связанные нечлены

uint qHash(const QHostAddress &key, uint seed = 0)
bool operator!=(QHostAddress::SpecialAddress lhs, const QHostAddress &rhs)
QDataStream & operator<<(QDataStream &out, const QHostAddress &address)
bool operator==(QHostAddress::SpecialAddress lhs, const QHostAddress &rhs)
QDataStream & operator>>(QDataStream &in, QHostAddress &address)

Подробное описание

Этот класс хранит адрес IPv4 или IPv6 в платформенно- и протокол-независимом формате.

QHostAddress обычно используется с QTcpSocket, QTcpServer и QUdpSocket для подключения к хосту или создания сервера.

Адрес хоста устанавливается с помощью setAddress(), и извлекается с помощью toIPv4Address(), toIPv6Address() или toString(). Тип можно проверить с помощью protocol().

Примечание: Обратите внимание, что QHostAddress не выполняет поиск DNS. Для этого требуется QHostInfo.

Класс также поддерживает общие предопределённые адреса: Null, LocalHost, LocalHostIPv6, Broadcast и Any.

См. также QHostInfo, QTcpSocket, QTcpServer и QUdpSocket.

Документация типов членов

enum QHostAddress::ConversionModeFlagflags QHostAddress::ConversionMode

Константа Значение Описание
QHostAddress::StrictConversion 0 Не преобразовывать адреса IPv6 в IPv4 при сравнении двух объектов QHostAddress разных протоколов, чтобы они всегда считались различными.
QHostAddress::ConvertV4MappedToIPv4 1 Преобразовывать IPv4-адреса IPv6 (RFC 4291 sect. 2.5.5.2) при сравнении. Таким образом, QHostAddress("::ffff:192.168.1.1") будет сравниваться как равный QHostAddress("192.168.1.1").
QHostAddress::ConvertV4CompatToIPv4 2 Преобразовывать IPv4-совместимые адреса IPv6 (RFC 4291 sect. 2.5.5.1) при сравнении. Таким образом, QHostAddress("::192.168.1.1") будет сравниваться как равный QHostAddress("192.168.1.1").
QHostAddress::ConvertLocalHost 8 Преобразовывать IPv6-адреса обратной связи в их IPv4 эквиваленты при сравнении. Например, QHostAddress("::1") будет сравниваться как равный QHostAddress("127.0.0.1").
QHostAddress::ConvertUnspecifiedAddress 4 Все неопределённые адреса будут сравниваться как равные, а именно AnyIPv4, AnyIPv6 и Any.
QHostAddress::TolerantConversion 0xff Устанавливает все три предыдущие флага.

Этот перечисление был введён или изменён в Qt 5.8.

Тип ConversionMode является псевдонимом для QFlags<ConversionModeFlag>. Он хранит логическое ИЛИ комбинацию значений ConversionModeFlag.

См. также isEqual().

enum QHostAddress::SpecialAddress

Константа Значение Описание
QHostAddress::Null 0 Объект нулевого адреса. Эквивалентно QHostAddress(). См. также QHostAddress::isNull().
QHostAddress::LocalHost 2 Адрес IPv4 локального хоста. Эквивалентно QHostAddress("127.0.0.1").
QHostAddress::LocalHostIPv6 3 Адрес IPv6 локального хоста. Эквивалентно QHostAddress("::1").
QHostAddress::Broadcast 1 Адрес IPv4 широковещательного канала. Эквивалентно QHostAddress("255.255.255.255").
QHostAddress::AnyIPv4 6 Любой IPv4 адрес. Эквивалентно QHostAddress("0.0.0.0"). Сокет, привязанный к этому адресу, будет слушать только на IPv4 интерфейсах.
QHostAddress::AnyIPv6 5 Любой IPv6 адрес. Эквивалентно QHostAddress("::"). Сокет, привязанный к этому адресу, будет слушать только на IPv6 интерфейсах.
QHostAddress::Any 4 Любой адрес двойного стека. Сокет, привязанный к этому адресу, будет слушать как на IPv4, так и на IPv6 интерфейсах.

Документация функций членов

QHostAddress::QHostAddress(QHostAddress::SpecialAddress address)

Создаёт объект QHostAddress для address.

QHostAddress::QHostAddress(const QHostAddress &address)

Создаёт копию заданного address.

QHostAddress::QHostAddress(const QString &address)

Создаёт IPv4 или IPv6 адрес на основе строки address (например, "127.0.0.1").

См. также setAddress().

QHostAddress::QHostAddress(const sockaddr *sockaddr)

Создаёт IPv4 или IPv6 адрес, используя адрес, заданный в структуре sockaddr.

См. также setAddress().

QHostAddress::QHostAddress(const Q_IPV6ADDR &ip6Addr)

Создаёт объект адреса хоста с адресом IPv6 ip6Addr.

QHostAddress::QHostAddress(const quint8 *ip6Addr)

Создаёт объект адреса хоста с адресом IPv6 ip6Addr.

ip6Addr должен быть массивом из 16 байтов в сетевом порядке байтов (big endian).

Эта функция была добавлена в Qt 5.5.

QHostAddress::QHostAddress(quint8 *ip6Addr)

Создаёт объект адреса хоста с адресом IPv6 ip6Addr.

ip6Addr должен быть массивом из 16 байтов в сетевом порядке байтов (big endian).

QHostAddress::QHostAddress(quint32 ip4Addr)

Создаёт объект адреса хоста с адресом IPv4 ip4Addr.

QHostAddress::QHostAddress()

Создаёт объект нулевого адреса хоста, т.е. адрес, который не является действительным для любого хоста или интерфейса.

См. также clear().

QHostAddress &QHostAddress::operator=(const QString &address)

Присваивает адрес хоста address этому объекту и возвращает ссылку на этот объект.

См. также setAddress().

QHostAddress &QHostAddress::operator=(const QHostAddress &address)

Присваивает адрес другого хоста address этому объекту и возвращает ссылку на этот объект.

QHostAddress::~QHostAddress()

Удаляет объект адреса хоста.

void QHostAddress::clear()

Устанавливает адрес хоста в ноль и протокол в QAbstractSocket::UnknownNetworkLayerProtocol.

См. также QHostAddress::Null.

bool QHostAddress::isBroadcast() const

Возвращает true если адрес — адрес IPv4 широковещательного канала, false в противном случае. Адрес IPv4 широковещательного канала — 255.255.255.255.

Обратите внимание, что эта функция не возвращает true для адреса локального широковещательного канала сети IPv4. Для этого используйте QNetworkInterface для получения адресов широковещания локальной машины.

Эта функция была добавлена в Qt 5.11.

См. также isLoopback(), isGlobal(), isMulticast(), isLinkLocal() и isUniqueLocalUnicast().

bool QHostAddress::isEqual(const QHostAddress &other, QHostAddress::ConversionMode mode = TolerantConversion) const

Возвращает true если адрес хоста совпадает с заданным адресом other; в противном случае возвращает false.

Параметр mode управляет выполнением преобразований между адресами разных протоколов. Если mode не задан, по умолчанию выполняется TolerantConversion.

Эта функция была добавлена в Qt 5.8.

См. также ConversionMode и operator==().

bool QHostAddress::isGlobal() const

Возвращает true если адрес является глобальным адресом IPv4 или IPv6, false в противном случае. Глобальный адрес — это адрес, который не зарезервирован для специальных целей (например, для обратной связи или многоадресной рассылки) или будущих целей.

Обратите внимание, что уникальные локальные одноадресные адреса IPv6 считаются глобальными адресами (см. isUniqueLocalUnicast()), как и адреса IPv4, зарезервированные для локальных сетей по RFC 1918.

Также обратите внимание, что адреса IPv6 для локальной сети устарели и должны рассматриваться как глобальные в новых приложениях. Эта функция также возвращает true для адресов локальной сети.

Эта функция была добавлена в Qt 5.11.

См. также isLoopback(), isSiteLocal() и isUniqueLocalUnicast().

bool QHostAddress::isInSubnet(const QHostAddress &subnet, int netmask) const

Возвращает true если этот IP-адрес находится в подсети, описанной префиксом сети subnet и маской сети netmask.

IP-адрес считается принадлежащим подсети, если он находится между самым низким и самым высоким адресом в этой подсети. В случае IP версии 4 самым низким адресом является адрес сети, а самым высоким — адрес широковещательной рассылки.

Аргумент subnet не обязательно должен быть фактическим адресом сети (самым низким адресом в подсети). Это может быть любой допустимый IP-адрес, принадлежащий этой подсети. В частности, если он равен IP-адресу, хранящемуся в этом объекте, эта функция всегда возвращает true (при условии, что маска сети — это допустимое значение).

Эта функция была добавлена в Qt 4.5.

См. также parseSubnet().

bool QHostAddress::isInSubnet(const QPair<QHostAddress, int> &subnet) const

Это перегруженная функция.

Возвращает true если этот IP-адрес находится в подсети, описанной параметром subnet. Член QHostAddress параметра subnet содержит префикс сети, а член int (второй) содержит маску сети (длина префикса).

Эта функция была добавлена в Qt 4.5.

bool QHostAddress::isLinkLocal() const

Возвращает true если адрес является локальным адресом IPv4 или IPv6, false в противном случае.

Локальный адрес IPv4 — это адрес в сети 169.254.0.0/16. Локальный адрес IPv6 — это адрес в сети fe80::/10. См. реестр IANA IPv6 Address Space для получения дополнительной информации.

Эта функция была добавлена в Qt 5.11.

См. также isLoopback(), isGlobal(), isMulticast(), isSiteLocal() и isUniqueLocalUnicast().

bool QHostAddress::isLoopback() const

возвращает true если адрес является адресом обратной связи IPv6 или любым из адресов обратной связи IPv4.

Эта функция была добавлена в Qt 5.0.

bool QHostAddress::isMulticast() const

Возвращает true если адрес является многоадресным адресом IPv4 или IPv6, false в противном случае.

Эта функция была добавлена в Qt 5.6.

См. также isLoopback(), isGlobal(), isLinkLocal(), isSiteLocal() и isUniqueLocalUnicast().

bool QHostAddress::isNull() const

Возвращает true если этот адрес хоста недействителен для какого-либо хоста или интерфейса.

Конструктор по умолчанию создает нулевой адрес.

См. также QHostAddress::Null.

bool QHostAddress::isSiteLocal() const

Возвращает true если адрес является сайтовым адресом IPv6, false в противном случае.

Сайт-локальный адрес IPv6 — это адрес в сети fec0::/10. См. реестр IANA IPv6 Address Space для получения дополнительной информации.

Адреса IPv6 локальной сети устарели и не должны использоваться в новых приложениях. Новые приложения не должны полагаться на эту функцию и должны рассматривать адреса локальной сети так же, как глобальные (поэтому isGlobal() также возвращает true). Локальные адреса локальной сети были заменены уникальными локальными адресами (ULA).

Эта функция была добавлена в Qt 5.11.

См. также isLoopback(), isGlobal(), isMulticast(), isLinkLocal() и isUniqueLocalUnicast().

bool QHostAddress::isUniqueLocalUnicast() const

Возвращает true если адрес является уникальным локальным одноадресным адресом IPv6, false в противном случае.

Уникальный локальный одноадресной адрес IPv6 — это адрес в сети fc00::/7. См. реестр IANA IPv6 Address Space для получения дополнительной информации.

Обратите внимание, что уникальные локальные одноадресные адреса также считаются глобальными адресами. RFC 4193 гласит, что на практике «приложения могут рассматривать эти адреса как адреса глобального охвата». Только маршрутизаторы должны учитывать это различие.

Эта функция была добавлена в Qt 5.11.

См. также isLoopback(), isGlobal(), isMulticast(), isLinkLocal() и isUniqueLocalUnicast().

[static] QPair<QHostAddress, int> QHostAddress::parseSubnet(const QString &subnet)

Парсит информацию об IP-адресе и маске подсети, содержащуюся в subnet, и возвращает префикс сети и его длину.

IP-адрес и маска сети должны быть разделены косой чертой (/).

Эта функция поддерживает аргументы в формате:

  • 123.123.123.123/n, где n — любое значение от 0 до 32
  • 123.123.123.123/255.255.255.255
  • <ipv6-адрес>/n, где n — любое значение от 0 до 128

Для IP версии 4 эта функция также принимает отсутствующие завершающие компоненты (т. е. меньше 4 октетов, например, «192.168.1»), с или без точки. Если маска сети также отсутствует в этом случае, она устанавливается равной количеству фактически переданных октетов (в приведенном выше примере это будет 24 для 3 октетов).

Эта функция была добавлена в Qt 4.5.

См. также isInSubnet().

QAbstractSocket::NetworkLayerProtocol QHostAddress::protocol() const

Возвращает протокол сетевого уровня адреса хоста.

QString QHostAddress::scopeId() const

Возвращает идентификатор области адреса IPv6. Для адресов IPv4 или если адрес не содержит идентификатора области возвращается пустая строка QString.

Идентификатор области IPv6 определяет область досягаемости для адресов IPv6, не являющихся глобальными, ограничивая область, в которой можно использовать адрес. Все адреса IPv6 связаны с такой областью достижимости. Идентификатор области используется для устранения неоднозначностей адресов, которые не гарантируют глобальную уникальность.

IPv6 определяет следующие четыре уровня достижимости:

  • Узел-локальный: адреса, которые используются только для связи с службами на том же интерфейсе (например, интерфейс обратной связи «::1»).
  • Связь-локальный: адреса, которые локальны для сетевого интерфейса (связь). Для каждого интерфейса IPv6 на хосте всегда есть один локальный адрес связи. Локальные адреса связи («fe80...») генерируются из MAC-адреса локального сетевого адаптера и не гарантируют уникальность.
  • Глобальный: для глобально маршрутизируемых адресов, таких как публичные серверы в Интернете.

При использовании локального или сайтового адреса связи для соединений IPv6 необходимо указать идентификатор области. Идентификатор области для локального адреса связи обычно совпадает с именем интерфейса (например, «eth0», «en1») или номером (например, «1», «2»).

Эта функция была добавлена в Qt 4.1.

См. также setScopeId(), QNetworkInterface и QNetworkInterface::interfaceFromName.

void QHostAddress::setAddress(quint32 ip4Addr)

Устанавливает адрес IPv4, указанный параметром ip4Addr.

void QHostAddress::setAddress(quint8 *ip6Addr)

Это перегруженная функция.

Устанавливает адрес IPv6, указанный параметром ip6Addr.

ip6Addr должен быть массивом из 16 байтов в сетевом порядке байтов (старший байт впереди).

void QHostAddress::setAddress(const quint8 *ip6Addr)

Это перегруженная функция.

Устанавливает адрес IPv6, указанный параметром ip6Addr.

ip6Addr должен быть массивом из 16 байтов в сетевом порядке байтов (старший байт впереди).

Эта функция была добавлена в Qt 5.5.

void QHostAddress::setAddress(const Q_IPV6ADDR &ip6Addr)

Это перегруженная функция.

Устанавливает адрес IPv6, указанный параметром ip6Addr.

void QHostAddress::setAddress(const sockaddr *sockaddr)

Это перегруженная функция.

Устанавливает IPv4 или IPv6 адрес, заданный структурой sockaddr. Возвращает true и устанавливает адрес, если адрес был успешно проанализирован; в противном случае возвращает false.

bool QHostAddress::setAddress(const QString &address)

Это перегруженный метод.

Устанавливает IPv4 или IPv6 адрес, заданный строковым представлением address (например, "127.0.0.1"). Возвращает true и устанавливает адрес, если адрес был успешно проанализирован; в противном случае возвращает false.

void QHostAddress::setAddress(QHostAddress::SpecialAddress address)

Это перегруженный метод.

Устанавливает специальный адрес, заданный address.

Этот метод был добавлен в Qt 5.8.

void QHostAddress::setScopeId(const QString &id)

Устанавливает идентификатор области IPv6 адреса на id. Если протокол адреса не IPv6, этот метод ничего не делает. Идентификатор области может быть задан как имя интерфейса (например, "eth0" или "en1"), или как целое число, представляющее индекс интерфейса. Если id — имя интерфейса, QtNetwork преобразует его в индекс интерфейса, используя QNetworkInterface::interfaceIndexFromName(), перед вызовом функций сетевого стека операционной системы.

Этот метод был добавлен в Qt 4.1.

См. также scopeId(), QNetworkInterface и QNetworkInterface::interfaceFromName.

void QHostAddress::swap(QHostAddress &other)

Меняет местами этот адрес хоста и other. Эта операция очень быстрая и никогда не завершается ошибкой.

Этот метод был добавлен в Qt 5.6.

quint32 QHostAddress::toIPv4Address() const

Возвращает IPv4 адрес в виде числа.

Например, если адрес — 127.0.0.1, возвращаемое значение — 2130706433 (т.е. 0x7f000001).

Это значение корректно, если протокол protocol() равен IPv4Protocol, или если протокол — IPv6Protocol и IPv6 адрес — IPv4-мапированный адрес. (RFC4291)

См. также toString().

quint32 QHostAddress::toIPv4Address(bool *ok) const

Возвращает IPv4 адрес в виде числа.

Например, если адрес — 127.0.0.1, возвращаемое значение — 2130706433 (т.е. 0x7f000001).

Это значение корректно, если протокол protocol() равен IPv4Protocol, или если протокол — IPv6Protocol и IPv6 адрес — IPv4-мапированный адрес. (RFC4291). В этих случаях ok будет установлен в true. В противном случае — в false.

См. также toString().

Q_IPV6ADDR QHostAddress::toIPv6Address() const

Возвращает IPv6 адрес как структуру Q_IPV6ADDR. Структура состоит из 16 беззнаковых символов.

Q_IPV6ADDR addr = hostAddr.toIPv6Address();
// addr contains 16 unsigned characters

for (int i = 0; i < 16; ++i) {
    // process addr[i]
}

Это значение корректно, если протокол protocol() равен IPv6Protocol. Если протокол — IPv4Protocol, адрес возвращается как IPv4-мапированный IPv6 адрес. (RFC4291)

См. также toString().

QString QHostAddress::toString() const

Возвращает адрес в виде строки.

Например, если адрес — IPv4 адрес 127.0.0.1, возвращаемая строка — "127.0.0.1". Для IPv6 формат строки следует рекомендациям RFC5952. Для QHostAddress::Any возвращается его IPv4 адрес ("0.0.0.0")

См. также toIPv4Address().

bool QHostAddress::operator!=(const QHostAddress &other) const

Возвращает true если адрес этого хоста не совпадает с адресом other; в противном случае возвращает false.

Этот метод был добавлен в Qt 4.2.

bool QHostAddress::operator!=(QHostAddress::SpecialAddress other) const

Возвращает true если адрес этого хоста не совпадает с адресом other; в противном случае возвращает false.

QHostAddress &QHostAddress::operator=(QHostAddress::SpecialAddress address)

Присваивает специальный адрес address этому объекту и возвращает ссылку на этот объект.

Этот метод был добавлен в Qt 5.8.

См. также setAddress().

bool QHostAddress::operator==(const QHostAddress &other) const

Возвращает true если адрес этого хоста совпадает с адресом other; в противном случае возвращает false. Этот оператор просто вызывает isEqual(other, StrictConversion).

См. также isEqual().

bool QHostAddress::operator==(QHostAddress::SpecialAddress other) const

Возвращает true если адрес этого хоста совпадает с адресом other; в противном случае возвращает false.

Связанные Нечленённые Элементы

uint qHash(const QHostAddress &key, uint seed = 0)

Возвращает хэш адреса хоста key, используя seed для инициализации вычисления.

Этот метод был добавлен в Qt 5.0.

bool operator!=(QHostAddress::SpecialAddress lhs, const QHostAddress &rhs)

Возвращает false если специальный адрес lhs совпадает с адресом хоста rhs; в противном случае возвращает true.

Этот метод был добавлен в Qt 5.9.

См. также isEqual().

QDataStream &operator<<(QDataStream &out, const QHostAddress &address)

Записывает адрес хоста address в поток out и возвращает ссылку на поток.

См. также Сериализация типов данных Qt.

bool operator==(QHostAddress::SpecialAddress lhs, const QHostAddress &rhs)

Возвращает true если специальный адрес lhs совпадает с адресом хоста rhs; в противном случае возвращает false.

См. также isEqual().

QDataStream &operator>>(QDataStream &in, QHostAddress &address)

Читает адрес хоста в address из потока in и возвращает ссылку на поток.

См. также Сериализация типов данных Qt.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.15/qhostaddress.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API