Класс QHostAddress
Класс QHostAddress предоставляет IP-адрес. Подробнее...
| Заголовок: | #include <QHostAddress> |
| qmake: | QT += network |
Открытые типы
| флаги | ConversionMode |
| перечисление | ConversionModeFlag { StrictConversion, ConvertV4MappedToIPv4, ConvertV4CompatToIPv4, ConvertLocalHost, ConvertUnspecifiedAddress, TolerantConversion } |
| перечисление | 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 | очистить() |
| bool | является_радиовещанием() const |
| bool | равно(const QHostAddress &other, QHostAddress::ConversionMode mode) const |
| bool | является_глобальным() const |
| bool | в_подсети(const QHostAddress &subnet, int netmask) const |
| bool | в_подсети(const QPair<QHostAddress, int> &subnet) const |
| bool | является_локальным_для_связи() const |
| bool | является_петлевой() const |
| bool | является_многоадресным() const |
| bool | является_пустым() const |
| bool | является_локальным_для_сайта() const |
| bool | является_уникальным_локальным_одноадресным() const |
| QAbstractSocket::NetworkLayerProtocol | протокол() const |
| QString | идентификатор_области() const |
| void | установить_адрес(quint32 ip4Addr) |
| void | установить_адрес(quint8 *ip6Addr) |
| void | установить_адрес(const quint8 *ip6Addr) |
| void | установить_адрес(const Q_IPV6ADDR &ip6Addr) |
| void | установить_адрес(const sockaddr *sockaddr) |
| bool | установить_адрес(const QString &address) |
| void | установить_адрес(QHostAddress::SpecialAddress address) |
| void | установить_идентификатор_области(const QString &id) |
| void | обменять(QHostAddress &other) |
| quint32 | в_IPv4_адрес() const |
| quint32 | в_IPv4_адрес(bool *ok) const |
| Q_IPV6ADDR | в_IPv6_адрес() const |
| QString | в_строку() const |
| bool | не_равно(const QHostAddress &other) const |
| bool | не_равно(QHostAddress::SpecialAddress other) const |
| QHostAddress & | присвоить(QHostAddress &&other) |
| QHostAddress & | присвоить(const QHostAddress &address) |
| QHostAddress & | присвоить(const QString &address) |
| QHostAddress & | присвоить(QHostAddress::SpecialAddress address) |
| bool | равно(const QHostAddress &other) const |
| bool | равно(QHostAddress::SpecialAddress other) const |
Статические публичные члены
| QPair<QHostAddress, int> | разобрать_подсеть(const QString &subnet) |
Защищённые переменные
| QExplicitlySharedDataPointer<QHostAddressPrivate> | d |
Связанные нечлены
| 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::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 — это typedef для QFlags<ConversionModeFlag>. Он хранит логическое ИЛИ сочетание значений ConversionModeFlag.
См. также isEqual().
enum QHostAddress::SpecialAddress
| Константа | Значение | Описание |
|---|---|---|
QHostAddress::Null |
0 |
Объект нулевого адреса. Эквивалентно QHostAddress(). См. также QHostAddress::isNull(). |
QHostAddress::LocalHost |
2 |
Адрес localhost IPv4. Эквивалентно QHostAddress("127.0.0.1"). |
QHostAddress::LocalHostIPv6 |
3 |
Адрес localhost 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()
Создаёт объект нулевого адреса хоста, то есть адрес, который не является допустимым для какого-либо хоста или интерфейса.
См. также 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 и устанавливает протокол в 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) 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-адрес считается принадлежащим подсети, если он находится между минимальным и максимальным адресами в этой подсети. В случае IPv4 минимальный адрес — это сетевой адрес, а максимальный — адрес широковещательной рассылки.
Аргумент 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-address>/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, то возвращается адрес, отображенный в 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/qt-5.12/qhostaddress.html