Spec-Zone.ru › Qt 5.9

Класс 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(SpecialAddress address)
~QHostAddress()
void clear()
bool isEqual(const QHostAddress &other, ConversionMode mode = TolerantConversion) const
bool isInSubnet(const QHostAddress &subnet, int netmask) const
bool isInSubnet(const QPair<QHostAddress, int> &subnet) const
bool isLoopback() const
bool isMulticast() const
bool isNull() 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(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!=(SpecialAddress other) const
QHostAddress & operator=(QHostAddress &&other)
QHostAddress & operator=(const QHostAddress &address)
QHostAddress & operator=(const QString &address)
QHostAddress & operator=(SpecialAddress address)
bool operator==(const QHostAddress &other) const
bool operator==(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 для подключения к хосту или для настройки сервера.

IP-адрес устанавливается с помощью 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, раздел 2.5.5.2) при сравнении. Таким образом, QHostAddress("::ffff:192.168.1.1") будет сравниваться с QHostAddress("192.168.1.1").
QHostAddress::ConvertV4CompatToIPv4 2 Преобразовывать IPv4-совместимые IPv6-адреса (RFC 4291, раздел 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 Адреса двойного стека (dual stack). Сокет, привязанный к этому адресу, будет слушать на обоих интерфейсах 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(SpecialAddress address)

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

QHostAddress::~QHostAddress()

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

void QHostAddress::clear()

Устанавливает адрес хоста в ноль.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

bool QHostAddress::isLoopback() const

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

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

bool QHostAddress::isMulticast() const

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

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

bool QHostAddress::isNull() const

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

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

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

[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(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!=(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=(SpecialAddress address)

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

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

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

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

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

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

bool QHostAddress::operator==(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.9/qhostaddress.html

Spec-Zone.ru

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