QHostAddress Class
La clase QHostAddress proporciona una dirección IP. Más...
| Cabecera: | #include <QHostAddress> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Network)target_link_libraries(mytarget PRIVATE Qt6::Network) |
| qmake: | QT += network |
- Lista de todos los miembros, incluyendo los heredados
- QHostAddress es parte de API de Programación de Redes y Clases Implícitamente Compartidas.
Tipos Públicos
| flags | ConversionMode |
| enum | ConversionModeFlag { StrictConversion, ConvertV4MappedToIPv4, ConvertV4CompatToIPv4, ConvertLocalHost, ConvertUnspecifiedAddress, TolerantConversion } |
| enum | SpecialAddress { Null, LocalHost, LocalHostIPv6, Broadcast, AnyIPv4, …, Any } |
Funciones Públicas
| QHostAddress() | |
| QHostAddress(QHostAddress::SpecialAddress address) | |
| QHostAddress(const QString &address) | |
| QHostAddress(const Q_IPV6ADDR &ip6Addr) | |
| QHostAddress(const quint8 *ip6Addr) | |
| QHostAddress(const sockaddr *sockaddr) | |
| QHostAddress(quint32 ip4Addr) | |
| QHostAddress(const QHostAddress &address) | |
(since 6.8) | QHostAddress(QHostAddress &&other) |
| ~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 std::pair<QHostAddress, int> &subnet) const |
| bool | isLinkLocal() const |
| bool | isLoopback() const |
| bool | isMulticast() const |
| bool | isNull() const |
(since 6.6) bool | isPrivateUse() const |
| bool | isSiteLocal() const |
| bool | isUniqueLocalUnicast() const |
| int | protocol() const |
| QString | scopeId() const |
| void | setAddress(quint32 ip4Addr) |
| void | setAddress(QHostAddress::SpecialAddress address) |
| bool | setAddress(const QString &address) |
| void | setAddress(const Q_IPV6ADDR &ip6Addr) |
| void | setAddress(const quint8 *ip6Addr) |
| void | setAddress(const sockaddr *sockaddr) |
| void | setScopeId(const QString &id) |
| void | swap(QHostAddress &other) |
| quint32 | toIPv4Address(bool *ok = nullptr) const |
| Q_IPV6ADDR | toIPv6Address() const |
| QString | toString() const |
| bool | operator!=(QHostAddress::SpecialAddress other) const |
| bool | operator!=(const QHostAddress &other) const |
| QHostAddress & | operator=(QHostAddress::SpecialAddress address) |
| QHostAddress & | operator=(const QHostAddress &address) |
| bool | operator==(QHostAddress::SpecialAddress other) const |
| bool | operator==(const QHostAddress &other) const |
Miembros Públicos Estáticos
| std::pair<QHostAddress, int> | parseSubnet(const QString &subnet) |
No Miembros Relacionados
| size_t | qHash(const QHostAddress &key, size_t 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) |
Descripción Detallada
Esta clase contiene una dirección IPv4 o IPv6 de forma independiente de plataforma y protocolo.
QHostAddress se utiliza normalmente con QTcpSocket, QTcpServer, y QUdpSocket para conectarse a un host o para configurar un servidor.
Una dirección de host se establece con setAddress(), y se recupera con toIPv4Address(), toIPv6Address(), o toString(). Puede comprobar el tipo con protocol().
Nota: Tenga en cuenta que QHostAddress no hace búsquedas DNS. QHostInfo es necesario para eso.
La clase también soporta direcciones predefinidas comunes: Null, LocalHost, LocalHostIPv6, Broadcast, y Any.
Ver también QHostInfo, QTcpSocket, QTcpServer, y QUdpSocket.
Documentación de tipos de miembros
enum QHostAddress::ConversionModeFlag
flags QHostAddress::ConversionMode
| Constante | Valor | Descripción |
|---|---|---|
QHostAddress::StrictConversion | 0 | No convierte direcciones IPv6 a IPv4 al comparar dos objetos QHostAddress de protocolos diferentes, por lo que siempre se considerarán diferentes. |
QHostAddress::ConvertV4MappedToIPv4 | 1 | Convertir direcciones IPv6 mapeadas a IPv4 (RFC 4291 secc. 2.5.5.2) al comparar. Por tanto, QHostAddress("::ffff:192.168.1.1") se comparará igual que QHostAddress("192.168.1.1"). |
QHostAddress::ConvertV4CompatToIPv4 | 2 | Convierta las direcciones IPv6 compatibles con IPv4 (RFC 4291 secc. 2.5.5.1) al comparar. Por lo tanto, QHostAddress("::192.168.1.1") se comparará igual a QHostAddress("192.168.1.1"). |
QHostAddress::ConvertLocalHost | 8 | Convierte las direcciones IPv6 loopback a su equivalente IPv4 al comparar. Por ejemplo, QHostAddress("::1") se comparará con QHostAddress("127.0.0.1"). |
QHostAddress::ConvertUnspecifiedAddress | 4 | Todas las direcciones no especificadas se compararán igual, es decir, AnyIPv4, AnyIPv6 y Cualquiera. |
QHostAddress::TolerantConversion | 0xff | Establece los tres indicadores anteriores. |
El tipo ConversionMode es un typedef para QFlags<ConversionModeFlag>. Almacena una combinación OR de valores ConversionModeFlag.
Ver también isEqual().
enum QHostAddress::SpecialAddress
| Constante | Valor | Descripción |
|---|---|---|
QHostAddress::Null | 0 | El objeto de dirección nulo. Equivale a QHostAddress(). Véase también QHostAddress::isNull(). |
QHostAddress::LocalHost | 2 | La dirección IPv4 localhost. Equivale a QHostAddress("127.0.0.1"). |
QHostAddress::LocalHostIPv6 | 3 | La dirección IPv6 localhost. Equivale a QHostAddress("::1"). |
QHostAddress::Broadcast | 1 | Dirección de difusión IPv4. Equivale a QHostAddress("255.255.255.255"). |
QHostAddress::AnyIPv4 | 6 | Dirección IPv4 any. Equivale a QHostAddress("0.0.0.0"). Un socket enlazado con esta dirección sólo escuchará en interfaces IPv4. |
QHostAddress::AnyIPv6 | 5 | La dirección IPv6 any. Equivale a QHostAddress("::"). Un socket enlazado con esta dirección sólo escuchará en interfaces IPv6. |
QHostAddress::Any | 4 | La dirección dual stack any. Un socket enlazado con esta dirección escuchará tanto en interfaces IPv4 como IPv6. |
Documentación de las funciones
QHostAddress::QHostAddress()
Construye un objeto de dirección de host nulo, es decir, una dirección que no es válida para ningún host o interfaz.
Véase también clear().
QHostAddress::QHostAddress(QHostAddress::SpecialAddress address)
Construye un objeto QHostAddress para address.
[explicit] QHostAddress::QHostAddress(const QString &address)
Construye una dirección IPv4 o IPv6 a partir de la cadena address (por ejemplo, "127.0.0.1").
Véase también setAddress().
[explicit] QHostAddress::QHostAddress(const Q_IPV6ADDR &ip6Addr)
Construye un objeto de dirección de host con la dirección IPv6 ip6Addr.
[explicit] QHostAddress::QHostAddress(const quint8 *ip6Addr)
Construye un objeto de dirección de host con la dirección IPv6 ip6Addr.
ip6Addr debe ser un array de 16 bytes en orden de bytes de red (big endian).
[explicit] QHostAddress::QHostAddress(const sockaddr *sockaddr)
Construye una dirección IPv4 o IPv6 utilizando la dirección especificada por la estructura nativa sockaddr.
Véase también setAddress().
[explicit] QHostAddress::QHostAddress(quint32 ip4Addr)
Construye un objeto de dirección de host con la dirección IPv4 ip4Addr.
QHostAddress::QHostAddress(const QHostAddress &address)
Construye una copia de address.
[constexpr noexcept, since 6.8] QHostAddress::QHostAddress(QHostAddress &&other)
Move-construye un nuevo QHostAddress a partir de other.
Nota: El objeto movido-desde other se coloca en un estado parcialmente formado, en el que las únicas operaciones válidas son la destrucción y la asignación de un nuevo valor.
Esta función se introdujo en Qt 6.8.
[noexcept] QHostAddress::~QHostAddress()
Destruye el objeto de dirección de host.
void QHostAddress::clear()
Establece la dirección del host en null y el protocolo en QAbstractSocket::UnknownNetworkLayerProtocol.
Véase también QHostAddress::Null.
bool QHostAddress::isBroadcast() const
Devuelve true si la dirección es la dirección de difusión IPv4, false en caso contrario. La dirección de difusión IPv4 es 255.255.255.255.
Tenga en cuenta que esta función no devuelve verdadero para la dirección de difusión local de una red IPv4. Para ello, utilice QNetworkInterface para obtener las direcciones de difusión de la máquina local.
Véase también isLoopback(), isGlobal(), isMulticast(), isLinkLocal(), isUniqueLocalUnicast(), y isPrivateUse().
bool QHostAddress::isEqual(const QHostAddress &other, QHostAddress::ConversionMode mode = TolerantConversion) const
Devuelve true si esta dirección de host es la misma que la dirección other dada; en caso contrario devuelve false.
El parámetro mode controla qué conversiones se realizan entre direcciones de protocolos diferentes. Si no se indica mode, se realiza TolerantConversion por defecto.
Véase también ConversionMode y operator==().
bool QHostAddress::isGlobal() const
Devuelve true si la dirección es una dirección global IPv4 o IPv6, false en caso contrario. Una dirección global es una dirección que no está reservada para propósitos especiales (como loopback o multicast) o propósitos futuros.
Tenga en cuenta que las direcciones unicast locales únicas IPv6 se consideran direcciones globales (consulte isUniqueLocalUnicast()), al igual que las direcciones IPv4 reservadas para redes locales por RFC 1918.
Observe también que las direcciones IPv6 site-local están obsoletas y deben considerarse globales en las nuevas aplicaciones. Esta función devuelve true también para las direcciones site-local.
Véase también isLoopback(), isSiteLocal(), isUniqueLocalUnicast(), y isPrivateUse().
bool QHostAddress::isInSubnet(const QHostAddress &subnet, int netmask) const
Devuelve true si esta IP está en la subred descrita por el prefijo de red subnet y la máscara de red netmask.
El parámetro netmask es la longitud del prefijo - el número de bits iniciales utilizados para identificar la parte de red de la dirección. Para IPv4, los valores válidos van de 0 a 32; para IPv6, de 0 a 128.
Se considera que una IP pertenece a una subred si está contenida entre la dirección más baja y la más alta de esa subred. En el caso de IP versión 4, la dirección más baja es la dirección de red, mientras que la más alta es la dirección de difusión.
El argumento subnet no tiene por qué ser la dirección de red real (la dirección más baja de la subred). Puede ser cualquier IP válida perteneciente a esa subred. En particular, si es igual a la dirección IP mantenida por este objeto, esta función siempre devolverá true (siempre que la longitud del prefijo sea un valor válido).
Véase también parseSubnet().
bool QHostAddress::isInSubnet(const std::pair<QHostAddress, int> &subnet) const
Devuelve true si esta IP está en la subred descrita por subnet. El miembro QHostAddress de subnet contiene el prefijo de red y el miembro int (segundo) contiene la máscara de red (longitud del prefijo).
Esta es una función sobrecargada.
bool QHostAddress::isLinkLocal() const
Devuelve true si la dirección es una dirección IPv4 o IPv6 link-local, false en caso contrario.
Una dirección IPv4 link-local es una dirección en la red 169.254.0.0/16. Una dirección IPv6 link-local es una dirección en la red fe80::/10. Para más información, consulte el registro del espacio de direcciones IPv6 de IANA.
Véase también isLoopback(), isGlobal(), isMulticast(), isSiteLocal(), isUniqueLocalUnicast() y isPrivateUse().
bool QHostAddress::isLoopback() const
devuelve true si la dirección es la dirección IPv6 loopback, o cualquiera de las direcciones IPv4 loopback.
bool QHostAddress::isMulticast() const
Devuelve true si la dirección es una dirección IPv4 o IPv6 multicast, false en caso contrario.
Véase también isLoopback(), isGlobal(), isLinkLocal(), isSiteLocal(), isUniqueLocalUnicast() y isPrivateUse().
bool QHostAddress::isNull() const
Devuelve true si esta dirección de host no es válida para ningún host o interfaz.
El constructor por defecto crea una dirección nula.
Véase también QHostAddress::Null.
[since 6.6] bool QHostAddress::isPrivateUse() const
Devuelve true si la dirección es una dirección unicast local única IPv6 o una dirección IPv4 reservada para redes locales por RFC 1918, false en caso contrario.
Esta función se introdujo en Qt 6.6.
Vea también isLoopback(), isGlobal(), isMulticast(), isLinkLocal(), isUniqueLocalUnicast(), y isBroadcast().
bool QHostAddress::isSiteLocal() const
Devuelve true si la dirección es una dirección IPv6 site-local, false en caso contrario.
Una dirección IPv6 site-local es una en la red fec0::/10. Consulte el registro del espacio de direcciones IPv6 de IANA para obtener más información.
Las direcciones locales de sitio IPv6 están obsoletas y no se debe depender de ellas en las nuevas aplicaciones. Las nuevas aplicaciones no deberían depender de esta función y deberían considerar las direcciones site-local igual que las globales (por eso isGlobal() también devuelve true). Las direcciones locales de sitio han sido sustituidas por direcciones locales únicas (ULA).
Véase también isLoopback(), isGlobal(), isMulticast(), isLinkLocal(), isUniqueLocalUnicast() y isPrivateUse().
bool QHostAddress::isUniqueLocalUnicast() const
Devuelve true si la dirección es una dirección unicast local única IPv6, false en caso contrario.
Una dirección IPv6 unique local unicast es una en la red fc00::/7. Consulte el registro del espacio de direcciones IPv6 de IANA para obtener más información.
Tenga en cuenta que las direcciones unicast locales únicas también cuentan como direcciones globales. El RFC 4193 dice que, en la práctica, "las aplicaciones pueden tratar estas direcciones como direcciones de ámbito global". Sólo los routers necesitan preocuparse por la distinción.
Véase también isLoopback(), isGlobal(), isMulticast(), isLinkLocal(), y isPrivateUse().
[static] std::pair<QHostAddress, int> QHostAddress::parseSubnet(const QString &subnet)
Analiza la información de IP y subred contenida en subnet y devuelve el prefijo de red para esa red y su longitud de prefijo.
La dirección IP y la máscara de red deben ir separadas por una barra (/).
Esta función admite argumentos de la forma
- 123.123.123.123/n donde n es cualquier valor entre 0 y 32
- 123.123.123.123/255.255.255.255
- <dirección-ipv6>/n donde n es cualquier valor entre 0 y 128
Para la versión 4 de IP, esta función acepta también componentes finales que falten (es decir, menos de 4 octetos, como "192.168.1"), seguidos o no de un punto. Si la máscara de red también falta en ese caso, se establece en el número de octetos realmente pasados (en el ejemplo anterior, sería 24, para 3 octetos).
Véase también isInSubnet().
int QHostAddress::protocol() const
Devuelve el protocolo de capa de red de la dirección del host.
QString QHostAddress::scopeId() const
Devuelve el ID de ámbito de una dirección IPv6. Para direcciones IPv4, o si la dirección no contiene un ID de ámbito, se devuelve un QString vacío.
El ID de ámbito IPv6 especifica el ámbito de alcanzabilidad para direcciones IPv6 no globales, limitando el área en la que se puede utilizar la dirección. Todas las direcciones IPv6 están asociadas a un ámbito de accesibilidad de este tipo. El ID de alcance se utiliza para desambiguar direcciones que no están garantizadas para ser globalmente únicas.
IPv6 especifica los siguientes cuatro niveles de alcanzabilidad:
- Nodo-local: Direcciones que sólo se utilizan para comunicarse con servicios de la misma interfaz (por ejemplo, la interfaz loopback "::1").
- Link-local: Direcciones locales a la interfaz de red(enlace). Siempre hay una dirección link-local por cada interfaz IPv6 del host. Las direcciones link-local ("fe80...") se generan a partir de la dirección MAC del adaptador de red local y no se garantiza que sean únicas.
- Global: Para direcciones enrutables globalmente, como servidores públicos en Internet.
Cuando utilice una dirección link-local o site-local para conexiones IPv6, debe especificar el scope ID. El ID de ámbito para una dirección link-local suele ser el mismo que el nombre de la interfaz (por ejemplo, "eth0", "en1") o el número (por ejemplo, "1", "2").
Véase también setScopeId(), QNetworkInterface, y QNetworkInterface::interfaceFromName.
void QHostAddress::setAddress(quint32 ip4Addr)
Establezca la dirección IPv4 especificada por ip4Addr.
void QHostAddress::setAddress(QHostAddress::SpecialAddress address)
Establece la dirección especial especificada por address.
Se trata de una función sobrecargada.
bool QHostAddress::setAddress(const QString &address)
Establece la dirección IPv4 o IPv6 especificada por la representación de cadena especificada por address (por ejemplo, "127.0.0.1"). Devuelve true y establece la dirección si se ha analizado correctamente; en caso contrario, devuelve false.
Se trata de una función sobrecargada.
void QHostAddress::setAddress(const Q_IPV6ADDR &ip6Addr)
Establece la dirección IPv6 especificada por ip6Addr.
Se trata de una función sobrecargada.
void QHostAddress::setAddress(const quint8 *ip6Addr)
Establece la dirección IPv6 especificada por ip6Addr.
ip6Addr debe ser un array de 16 bytes en orden de byte de red (primero el byte de orden superior).
Se trata de una función sobrecargada.
void QHostAddress::setAddress(const sockaddr *sockaddr)
Establece la dirección IPv4 o IPv6 especificada por la estructura nativa sockaddr. Devuelve true y establece la dirección si la dirección fue analizada con éxito; en caso contrario devuelve false.
Se trata de una función sobrecargada.
void QHostAddress::setScopeId(const QString &id)
Establece el ID de ámbito IPv6 de la dirección en id. Si el protocolo de la dirección no es IPv6, esta función no hace nada. El ID de ámbito puede establecerse como un nombre de interfaz (como "eth0" o "en1") o como un entero que representa el índice de interfaz. Si id es un nombre de interfaz, QtNetwork se convertirá en un índice de interfaz utilizando QNetworkInterface::interfaceIndexFromName() antes de llamar a las funciones de red del sistema operativo.
Véase también scopeId(), QNetworkInterface, y QNetworkInterface::interfaceFromName.
[noexcept] void QHostAddress::swap(QHostAddress &other)
Intercambia esta dirección de host con other. Esta operación es muy rápida y nunca falla.
quint32 QHostAddress::toIPv4Address(bool *ok = nullptr) const
Devuelve la dirección IPv4 como un número.
Por ejemplo, si la dirección es 127.0.0.1, el valor devuelto es 2130706433 (es decir, 0x7f000001).
Este valor es válido si el protocol() es IPv4Protocol, o si el protocolo es IPv6Protocol, y la dirección IPv6 es una dirección IPv4 mapeada (RFC4291). En esos casos, ok se establecerá como verdadero. En caso contrario, será false.
Véase también toString().
Q_IPV6ADDR QHostAddress::toIPv6Address() const
Devuelve la dirección IPv6 como una estructura Q_IPV6ADDR. La estructura consta de 16 caracteres sin signo.
Q_IPV6ADDR addr = hostAddr.toIPv6Address(); // addr contains 16 unsigned characters for (int i = 0; i < 16; ++i) { // process addr[i] }
Este valor es válido si el protocol() es IPv6Protocol. Si el protocolo es IPv4Protocol, entonces la dirección se devuelve como una dirección IPv4 mapeada IPv6. (RFC4291)
Véase también toString().
QString QHostAddress::toString() const
Devuelve la dirección en forma de cadena.
Por ejemplo, si la dirección es la dirección IPv4 127.0.0.1, la cadena devuelta es "127.0.0.1". Para IPv6, el formato de la cadena seguirá la recomendación RFC5952. Para QHostAddress::Any, se devolverá su dirección IPv4 ("0.0.0.0").
Véase también toIPv4Address().
bool QHostAddress::operator!=(QHostAddress::SpecialAddress other) const
Devuelve true si esta dirección de host no es la misma que la dirección other dada; en caso contrario devuelve false.
bool QHostAddress::operator!=(const QHostAddress &other) const
Devuelve true si esta dirección de host no es la misma que la dirección other dada; en caso contrario devuelve false.
QHostAddress &QHostAddress::operator=(QHostAddress::SpecialAddress address)
Asigna la dirección especial address a este objeto, y devuelve una referencia a este objeto.
Véase también setAddress().
QHostAddress &QHostAddress::operator=(const QHostAddress &address)
Asigna otro host address a este objeto, y devuelve una referencia a este objeto.
bool QHostAddress::operator==(QHostAddress::SpecialAddress other) const
Devuelve true si esta dirección de host es la misma que la dirección other dada; en caso contrario devuelve false.
bool QHostAddress::operator==(const QHostAddress &other) const
Devuelve true si esta dirección de host es la misma que la dirección other dada; en caso contrario devuelve false. Este operador sólo llama a isEqual(otro, StrictConversion).
Véase también isEqual().
No miembros relacionados
[noexcept] size_t qHash(const QHostAddress &key, size_t seed = 0)
Devuelve el valor hash para key, utilizando seed para sembrar el cálculo.
bool operator!=(QHostAddress::SpecialAddress lhs, const QHostAddress &rhs)
Devuelve false si la dirección especial lhs es la misma que la dirección del host rhs; en caso contrario devuelve true.
Véase también isEqual().
QDataStream &operator<<(QDataStream &out, const QHostAddress &address)
Escribe la dirección del host address en el flujo out y devuelve una referencia al flujo.
Véase también Serializar tipos de datos Qt.
bool operator==(QHostAddress::SpecialAddress lhs, const QHostAddress &rhs)
Devuelve true si la dirección especial lhs es la misma que la dirección del host rhs; en caso contrario devuelve false.
Véase también isEqual().
QDataStream &operator>>(QDataStream &in, QHostAddress &address)
Lee una dirección de host en address desde el flujo in y devuelve una referencia al flujo.
Véase también Serializar tipos de datos Qt.
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.