Spec-Zone.ru › Qt 5.11

Класс QHostAddress

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

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

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

flags ConversionMode
enum ConversionModeFlag { StrictConversion, ConvertV4MappedToIPv4, ConvertV4CompatToIPv4, ConvertLocalHost, ConvertUnspecifiedAddress, TolerantConversion }
enum SpecialAddress { Null, LocalHost, LocalHostIPv6, Broadcast, ..., Any }

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

QHostAddress()
QHostAddress(quint32 ip4Addr)
QHostAddress(quint8 *ip6Addr)
QHostAddress(const quint8 *ip6Addr)
QHostAddress(const Q_IPV6ADDR &ip6Addr)
QHostAddress(const sockaddr *sockaddr)
QHostAddress(const QString &address)
QHostAddress(const QHostAddress &address)
QHostAddress(QHostAddress::SpecialAddress 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 &&other)
QHostAddress & operator=(const QHostAddress &address)
QHostAddress & operator=(const QString &address)
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)

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

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

Этот класс хранит 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::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 localhost. Эквивалентно QHostAddress("127.0.0.1").
QHostAddress::LocalHostIPv6 3 Адрес IPv6 localhost. Эквивалентно 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()

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

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

QHostAddress::QHostAddress(quint32 ip4Addr)

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

QHostAddress::QHostAddress(quint8 *ip6Addr)

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

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

QHostAddress::QHostAddress(const quint8 *ip6Addr)

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

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

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

QHostAddress::QHostAddress(const Q_IPV6ADDR &ip6Addr)

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

QHostAddress::QHostAddress(const sockaddr *sockaddr)

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

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

QHostAddress::QHostAddress(const QString &address)

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

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

QHostAddress::QHostAddress(const QHostAddress &address)

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

QHostAddress::QHostAddress(QHostAddress::SpecialAddress address)

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

QHostAddress::~QHostAddress()

Уничтожает объект адреса хоста.

void QHostAddress::clear()

Устанавливает адрес хоста в значение null.

См. также 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-адресом, отображённым в IPv6. (RFC4291)

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

quint32 QHostAddress::toIPv4Address(bool *ok) const

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

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

Это значение корректно, если protocol() равен IPv4Protocol, или если протокол равен IPv6Protocol, а IPv6-адрес является IPv4-адресом, отображённым в IPv6. (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 &&other)

Оператор присваивания перемещения.

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

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

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

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

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

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/archives/qt-5.11/qhostaddress.html

Spec-Zone.ru

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