Sur cette page

QHostAddress Class

La classe QHostAddress fournit une adresse IP. Plus d'informations...

En-tête : #include <QHostAddress>
CMake : find_package(Qt6 REQUIRED COMPONENTS Network)
target_link_libraries(mytarget PRIVATE Qt6::Network)
qmake : QT += network

Types publics

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

Fonctions publiques

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

Membres publics statiques

std::pair<QHostAddress, int> parseSubnet(const QString &subnet)
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)

Description détaillée

Cette classe contient une adresse IPv4 ou IPv6 indépendamment de la plate-forme et du protocole.

QHostAddress est normalement utilisé avec QTcpSocket, QTcpServer, et QUdpSocket pour se connecter à un hôte ou pour configurer un serveur.

Une adresse d'hôte est définie avec setAddress(), et récupérée avec toIPv4Address(), toIPv6Address(), ou toString(). Vous pouvez vérifier le type avec protocol().

Note : Veuillez noter que QHostAddress ne fait pas de recherche DNS. QHostInfo est nécessaire pour cela.

La classe prend également en charge les adresses prédéfinies courantes : Null, LocalHost, LocalHostIPv6, Broadcast, et Any.

Voir aussi QHostInfo, QTcpSocket, QTcpServer, et QUdpSocket.

Documentation des types de membres

enum QHostAddress::ConversionModeFlag
flags QHostAddress::ConversionMode

ConstanteValeurDescription
QHostAddress::StrictConversion0Ne pas convertir les adresses IPv6 en IPv4 lors de la comparaison de deux objets QHostAddress de protocoles différents, de sorte qu'ils seront toujours considérés comme différents.
QHostAddress::ConvertV4MappedToIPv41Convertir les adresses IPv6 mappées en IPv4 (RFC 4291 sect. 2.5.5.2) lors de la comparaison. Par conséquent, QHostAddress("::ffff:192.168.1.1") sera comparé à QHostAddress("192.168.1.1").
QHostAddress::ConvertV4CompatToIPv42Convertir les adresses IPv4-compatibles IPv6 (RFC 4291 sect. 2.5.5.1) lors de la comparaison. Par conséquent, QHostAddress("::192.168.1.1") sera comparé à QHostAddress("192.168.1.1").
QHostAddress::ConvertLocalHost8Convertir les adresses de bouclage IPv6 en leur équivalent IPv4 lors de la comparaison. Ainsi, par exemple, QHostAddress("::1") sera comparé à QHostAddress("127.0.0.1").
QHostAddress::ConvertUnspecifiedAddress4Toutes les adresses non spécifiées seront comparées de la même manière, à savoir AnyIPv4, AnyIPv6 et Any.
QHostAddress::TolerantConversion0xffActive les trois drapeaux précédents.

Le type ConversionMode est un typedef pour QFlags<ConversionModeFlag>. Il stocke une combinaison OU de valeurs ConversionModeFlag.

Voir également isEqual().

enum QHostAddress::SpecialAddress

ConstanteValeurDescription de l'objet
QHostAddress::Null0L'objet "adresse nulle". Équivalent à QHostAddress(). Voir également QHostAddress::isNull().
QHostAddress::LocalHost2L'adresse IPv4 de l'hôte local. Équivalent à QHostAddress("127.0.0.1").
QHostAddress::LocalHostIPv63L'adresse IPv6 de l'hôte local. Équivalente à QHostAddress("::1").
QHostAddress::Broadcast1L'adresse de diffusion IPv4. Équivalente à QHostAddress("255.255.255.255").
QHostAddress::AnyIPv46L'adresse IPv4 quelconque. Équivalente à QHostAddress("0.0.0.0"). Une socket liée à cette adresse n'écoutera que les interfaces IPv4.
QHostAddress::AnyIPv65L'adresse IPv6 quelconque. Équivalente à QHostAddress(": :"). Une socket liée à cette adresse n'écoutera que sur les interfaces IPv6.
QHostAddress::Any4L'adresse quelconque à double pile. Une socket liée à cette adresse écoutera sur les interfaces IPv4 et IPv6.

Documentation des fonctions membres

QHostAddress::QHostAddress()

Construit un objet d'adresse d'hôte nul, c'est-à-dire une adresse qui n'est pas valide pour un hôte ou une interface.

Voir aussi clear().

QHostAddress::QHostAddress(QHostAddress::SpecialAddress address)

Construit un objet QHostAddress pour address.

[explicit] QHostAddress::QHostAddress(const QString &address)

Construit une adresse IPv4 ou IPv6 à partir de la chaîne address (par exemple, "127.0.0.1").

Voir aussi setAddress().

[explicit] QHostAddress::QHostAddress(const Q_IPV6ADDR &ip6Addr)

Construit un objet d'adresse d'hôte avec l'adresse IPv6 ip6Addr.

[explicit] QHostAddress::QHostAddress(const quint8 *ip6Addr)

Construit un objet adresse d'hôte avec l'adresse IPv6 ip6Addr.

ip6Addr doit être un tableau de 16 octets dans l'ordre des octets du réseau (big endian).

[explicit] QHostAddress::QHostAddress(const sockaddr *sockaddr)

Construit une adresse IPv4 ou IPv6 en utilisant l'adresse spécifiée par la structure native sockaddr.

Voir aussi setAddress().

[explicit] QHostAddress::QHostAddress(quint32 ip4Addr)

Construit un objet d'adresse d'hôte avec l'adresse IPv4 ip4Addr.

QHostAddress::QHostAddress(const QHostAddress &address)

Construit une copie de l'adresse address.

[constexpr noexcept, since 6.8] QHostAddress::QHostAddress(QHostAddress &&other)

Move-construit une nouvelle QHostAddress à partir de other.

Note : L'objet déplacé other est placé dans un état partiellement formé, dans lequel les seules opérations valides sont la destruction et l'assignation d'une nouvelle valeur.

Cette fonction a été introduite dans Qt 6.8.

[noexcept] QHostAddress::~QHostAddress()

Détruit l'objet adresse de l'hôte.

void QHostAddress::clear()

Définit l'adresse de l'hôte à null et le protocole à QAbstractSocket::UnknownNetworkLayerProtocol.

Voir aussi QHostAddress::Null.

bool QHostAddress::isBroadcast() const

Renvoie true si l'adresse est l'adresse de diffusion IPv4, false sinon. L'adresse de diffusion IPv4 est 255.255.255.255.

Notez que cette fonction ne renvoie pas la valeur true pour l'adresse de diffusion locale d'un réseau IPv4. Pour cela, utilisez QNetworkInterface pour obtenir les adresses de diffusion de la machine locale.

Voir aussi isLoopback(), isGlobal(), isMulticast(), isLinkLocal(), isUniqueLocalUnicast() et isPrivateUse().

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

Renvoie true si l'adresse de l'hôte est la même que l'adresse other indiquée ; sinon, renvoie false.

Le paramètre mode détermine les conversions à effectuer entre les adresses de protocoles différents. Si mode n'est pas indiqué, TolerantConversion est exécuté par défaut.

Voir aussi ConversionMode et operator==().

bool QHostAddress::isGlobal() const

Renvoie true si l'adresse est une adresse globale IPv4 ou IPv6, false sinon. Une adresse globale est une adresse qui n'est pas réservée à des fins spéciales (comme loopback ou multicast) ou à des fins futures.

Notez que les adresses de monodiffusion locales uniques IPv6 sont considérées comme des adresses globales (voir isUniqueLocalUnicast()), tout comme les adresses IPv4 réservées aux réseaux locaux par la RFC 1918.

Notez également que les adresses locales de site IPv6 sont dépréciées et doivent être considérées comme globales dans les nouvelles applications. Cette fonction renvoie également un résultat positif pour les adresses locales de site.

Voir aussi isLoopback(), isSiteLocal(), isUniqueLocalUnicast() et isPrivateUse().

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

Renvoie true si cette IP se trouve dans le sous-réseau décrit par le préfixe de réseau subnet et le masque de réseau netmask.

Le paramètre netmask est la longueur du préfixe, c'est-à-dire le nombre de bits de tête utilisés pour identifier la partie réseau de l'adresse. Pour IPv4, les valeurs valables vont de 0 à 32 ; pour IPv6, de 0 à 128.

Une adresse IP est considérée comme appartenant à un sous-réseau si elle est comprise entre l'adresse la plus basse et l'adresse la plus haute de ce sous-réseau. Dans le cas de la version 4 de l'IP, l'adresse la plus basse est l'adresse du réseau, tandis que l'adresse la plus haute est l'adresse de diffusion.

L'argument subnet ne doit pas nécessairement être l'adresse réseau réelle (l'adresse la plus basse du sous-réseau). Il peut s'agir de n'importe quelle adresse IP valide appartenant à ce sous-réseau. En particulier, si elle est égale à l'adresse IP détenue par cet objet, cette fonction renverra toujours true (à condition que la longueur du préfixe soit une valeur valide).

Voir aussi parseSubnet().

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

Renvoie true si cette IP se trouve dans le sous-réseau décrit par subnet. Le membre QHostAddress de subnet contient le préfixe du réseau et le membre int (second) contient le masque de réseau (longueur du préfixe).

Il s'agit d'une fonction surchargée.

bool QHostAddress::isLinkLocal() const

Renvoie true si l'adresse est une adresse locale de liaison IPv4 ou IPv6, false dans le cas contraire.

Une adresse locale de lien IPv4 est une adresse du réseau 169.254.0.0/16. Une adresse locale de lien IPv6 est une adresse du réseau fe80::/10. Pour plus d'informations, voir le registre de l'espace d'adressage IPv6 de l'IANA.

Voir aussi isLoopback(), isGlobal(), isMulticast(), isSiteLocal(), isUniqueLocalUnicast() et isPrivateUse().

bool QHostAddress::isLoopback() const

renvoie true si l'adresse est l'adresse de bouclage IPv6 ou l'une des adresses de bouclage IPv4.

bool QHostAddress::isMulticast() const

Renvoie true si l'adresse est une adresse multicast IPv4 ou IPv6, false sinon.

Voir aussi isLoopback(), isGlobal(), isLinkLocal(), isSiteLocal(), isUniqueLocalUnicast() et isPrivateUse().

bool QHostAddress::isNull() const

Retourne true si cette adresse d'hôte n'est pas valide pour un hôte ou une interface.

Le constructeur par défaut crée une adresse nulle.

Voir aussi QHostAddress::Null.

[since 6.6] bool QHostAddress::isPrivateUse() const

Renvoie true si l'adresse est une adresse de monodiffusion locale unique IPv6 ou une adresse IPv4 réservée aux réseaux locaux par la RFC 1918, false dans le cas contraire.

Cette fonction a été introduite dans Qt 6.6.

Voir aussi isLoopback(), isGlobal(), isMulticast(), isLinkLocal(), isUniqueLocalUnicast(), et isBroadcast().

bool QHostAddress::isSiteLocal() const

Renvoie true si l'adresse est une adresse locale de site IPv6, false dans le cas contraire.

Une adresse locale de site IPv6 est une adresse du réseau fec0::/10. Voir le registre de l 'espace d'adressage IPv6 de l'IANA pour plus d'informations.

Les adresses locales de site IPv6 sont obsolètes et ne doivent pas être utilisées dans les nouvelles applications. Les nouvelles applications ne doivent pas dépendre de cette fonction et doivent considérer les adresses locales comme des adresses globales (c'est pourquoi isGlobal() renvoie également true). Les adresses locales ont été remplacées par des adresses locales uniques (ULA).

Voir aussi isLoopback(), isGlobal(), isMulticast(), isLinkLocal(), isUniqueLocalUnicast() et isPrivateUse().

bool QHostAddress::isUniqueLocalUnicast() const

Renvoie true si l'adresse est une adresse de monodiffusion locale unique IPv6, false dans le cas contraire.

Une adresse de monodiffusion locale unique IPv6 est une adresse du réseau fc00::/7. Voir le registre de l 'espace d'adressage IPv6 de l'IANA pour plus d'informations.

Notez que les adresses de monodiffusion locales uniques comptent également comme des adresses globales. Le RFC 4193 indique que, dans la pratique, "les applications peuvent traiter ces adresses comme des adresses globales". Seuls les routeurs doivent se préoccuper de cette distinction.

Voir également isLoopback(), isGlobal(), isMulticast(), isLinkLocal() et isPrivateUse().

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

Analyse les informations relatives à l'adresse IP et au sous-réseau contenues dans subnet et renvoie le préfixe du réseau ainsi que sa longueur.

L'adresse IP et le masque de réseau doivent être séparés par une barre oblique (/).

Cette fonction prend en charge des arguments de la forme

  • 123.123.123.123/n où n est une valeur comprise entre 0 et 32
  • 123.123.123.123/255.255.255.255
  • <ipv6-address>/n où n est une valeur comprise entre 0 et 128

Pour la version 4 de l'IP, cette fonction accepte également les composants de fin manquants (c.-à-d. moins de 4 octets, comme "192.168.1"), suivis ou non d'un point. Si le masque de réseau est également manquant dans ce cas, il est fixé au nombre d'octets effectivement transmis (dans l'exemple ci-dessus, ce serait 24, pour 3 octets).

Voir aussi isInSubnet().

int QHostAddress::protocol() const

Renvoie le protocole de la couche réseau de l'adresse de l'hôte.

QString QHostAddress::scopeId() const

Renvoie l'identifiant d'étendue d'une adresse IPv6. Pour les adresses IPv4, ou si l'adresse ne contient pas d'identifiant d'étendue, une adresse vide QString est renvoyée.

L'ID d'étendue IPv6 spécifie l'étendue de l'accessibilité pour les adresses IPv6 non globales, en limitant la zone dans laquelle l'adresse peut être utilisée. Toutes les adresses IPv6 sont associées à une telle portée d'accessibilité. L'ID d'étendue est utilisé pour désambiguïser les adresses dont l'unicité globale n'est pas garantie.

IPv6 spécifie les quatre niveaux d'accessibilité suivants :

  • Node-local : Adresses utilisées uniquement pour communiquer avec des services sur la même interface (par exemple, l'interface de bouclage "::1").
  • Locales au niveau du lien : Adresses locales à l'interface réseau(lien). Il y a toujours une adresse locale pour chaque interface IPv6 sur votre hôte. Les adresses locales ("fe80...") sont générées à partir de l'adresse MAC de l'adaptateur réseau local et leur unicité n'est pas garantie.
  • Globale : Pour les adresses routables au niveau mondial, telles que les serveurs publics sur l'internet.

Lorsque vous utilisez une adresse locale de lien ou de site pour des connexions IPv6, vous devez spécifier l'ID d'étendue. L'ID d'étendue d'une adresse locale est généralement le même que le nom de l'interface (par exemple, "eth0", "en1") ou le numéro (par exemple, "1", "2").

Voir aussi setScopeId(), QNetworkInterface, et QNetworkInterface::interfaceFromName.

void QHostAddress::setAddress(quint32 ip4Addr)

Définir l'adresse IPv4 spécifiée par ip4Addr.

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

Définit l'adresse spéciale spécifiée par address.

Il s'agit d'une fonction surchargée.

bool QHostAddress::setAddress(const QString &address)

Définit l'adresse IPv4 ou IPv6 spécifiée par la représentation de la chaîne spécifiée par address (par exemple, "127.0.0.1"). Renvoie true et définit l'adresse si l'adresse a été analysée avec succès ; sinon, renvoie false.

Il s'agit d'une fonction surchargée.

void QHostAddress::setAddress(const Q_IPV6ADDR &ip6Addr)

Définit l'adresse IPv6 spécifiée par ip6Addr.

Il s'agit d'une fonction surchargée.

void QHostAddress::setAddress(const quint8 *ip6Addr)

Définit l'adresse IPv6 spécifiée par ip6Addr.

ip6Addr doit être un tableau de 16 octets dans l'ordre des octets du réseau (l'octet de poids fort en premier).

Il s'agit d'une fonction surchargée.

void QHostAddress::setAddress(const sockaddr *sockaddr)

Définit l'adresse IPv4 ou IPv6 spécifiée par la structure native sockaddr. Renvoie true et définit l'adresse si celle-ci a été analysée avec succès ; sinon, renvoie false.

Il s'agit d'une fonction surchargée.

void QHostAddress::setScopeId(const QString &id)

Définit l'ID d'étendue IPv6 de l'adresse à id. Si le protocole d'adresse n'est pas IPv6, cette fonction ne fait rien. Le scope ID peut être défini comme un nom d'interface (tel que "eth0" ou "en1") ou comme un entier représentant l'index de l'interface. Si id est un nom d'interface, QtNetwork sera converti en index d'interface à l'aide de QNetworkInterface::interfaceIndexFromName() avant d'appeler les fonctions de mise en réseau du système d'exploitation.

Voir aussi scopeId(), QNetworkInterface, et QNetworkInterface::interfaceFromName.

[noexcept] void QHostAddress::swap(QHostAddress &other)

Échange l'adresse de cet hôte avec other. Cette opération est très rapide et n'échoue jamais.

quint32 QHostAddress::toIPv4Address(bool *ok = nullptr) const

Renvoie l'adresse IPv4 sous forme de nombre.

Par exemple, si l'adresse est 127.0.0.1, la valeur renvoyée est 2130706433 (c'est-à-dire 0x7f000001).

Cette valeur est valable si protocol() est IPv4Protocol, ou si le protocole est IPv6Protocol, et si l'adresse IPv6 est une adresse mappée IPv4 (RFC4291). Dans ces cas, ok aura la valeur true (vrai). Dans le cas contraire, la valeur est fixée à false.

Voir aussi toString().

Q_IPV6ADDR QHostAddress::toIPv6Address() const

Renvoie l'adresse IPv6 sous la forme d'une structure Q_IPV6ADDR. Cette structure se compose de 16 caractères non signés.

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

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

Cette valeur est valide si le protocole protocol() est IPv6Protocol. Si le protocole est IPv4Protocol, l'adresse est renvoyée sous la forme d'une adresse IPv4 mappée IPv6. (RFC4291)

Voir également toString().

QString QHostAddress::toString() const

Renvoie l'adresse sous forme de chaîne de caractères.

Par exemple, si l'adresse est l'adresse IPv4 127.0.0.1, la chaîne renvoyée est "127.0.0.1". Pour IPv6, le format de la chaîne suivra la recommandation RFC5952. Pour QHostAddress::Any, son adresse IPv4 sera renvoyée ("0.0.0.0").

Voir aussi toIPv4Address().

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

Renvoie true si l'adresse de l'hôte n'est pas la même que l'adresse other indiquée ; sinon, renvoie false.

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

Renvoie true si l'adresse de l'hôte n'est pas la même que l'adresse other indiquée ; sinon, renvoie false.

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

Attribue l'adresse spéciale address à cet objet et renvoie une référence à cet objet.

Voir aussi setAddress().

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

Attribue un autre hôte address à cet objet et renvoie une référence à cet objet.

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

Renvoie true si l'adresse de cet hôte est la même que l'adresse other indiquée ; sinon, renvoie false.

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

Renvoie true si l'adresse de cet hôte est la même que l'adresse other indiquée ; sinon, renvoie false. Cet opérateur appelle simplement isEqual(autre, StrictConversion).

Voir aussi isEqual().

Non-membres apparentés

[noexcept] size_t qHash(const QHostAddress &key, size_t seed = 0)

Renvoie la valeur de hachage pour key, en utilisant seed comme base de calcul.

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

Renvoie false si l'adresse spéciale lhs est la même que l'adresse de l'hôte rhs; sinon, renvoie true.

Voir aussi isEqual().

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

Écrit l'adresse de l'hôte address dans le flux out et renvoie une référence au flux.

Voir aussi Serializing Qt Data Types (Sérialisation des types de données Qt).

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

Renvoie true si l'adresse spéciale lhs est la même que l'adresse de l'hôte rhs; sinon, renvoie false.

Voir aussi isEqual().

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

Lit une adresse d'hôte dans address à partir du flux in et renvoie une référence au flux.

Voir aussi Serializing Qt Data Types (Sérialisation des types de données 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.