Sur cette page

QNetworkInterface Class

La classe `QNetworkInterface` fournit la liste des adresses IP et des interfaces réseau de l'hôte. En savoir plus...

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

Remarque : toutes les fonctions de cette classe sont réentrantes.

Types publics

enum InterfaceFlag { IsUp, IsRunning, CanBroadcast, IsLoopBack, IsPointToPoint, CanMulticast }
flags InterfaceFlags
enum InterfaceType { Unknown, Loopback, Virtual, Ethernet, Wifi, …, Ieee1394 }

Fonctions publiques

QNetworkInterface()
QNetworkInterface(const QNetworkInterface &other)
~QNetworkInterface()
QList<QNetworkAddressEntry> addressEntries() const
QNetworkInterface::InterfaceFlags flags() const
QString hardwareAddress() const
QString humanReadableName() const
int index() const
bool isValid() const
int maximumTransmissionUnit() const
QString name() const
void swap(QNetworkInterface &other)
QNetworkInterface::InterfaceType type() const
QNetworkInterface &operator=(const QNetworkInterface &other)

Membres publics statiques

QList<QHostAddress> allAddresses()
QList<QNetworkInterface> allInterfaces()
QNetworkInterface interfaceFromIndex(int index)
QNetworkInterface interfaceFromName(const QString &name)
int interfaceIndexFromName(const QString &name)
QString interfaceNameFromIndex(int index)
QDebug operator<<(QDebug debug, const QNetworkInterface &networkInterface)

Description détaillée

QNetworkInterface représente une interface réseau connectée à l'hôte sur lequel le programme est exécuté. Chaque interface réseau peut contenir zéro ou plusieurs adresses IP, chacune pouvant être associée à un masque de réseau et/ou à une adresse de diffusion. La liste de ces trios peut être obtenue à l'aide de la fonction ` addressEntries()`. Sinon, lorsque le masque de réseau, les adresses de diffusion ou d'autres informations ne sont pas nécessaires, utilisez la fonction de commodité ` allAddresses()` pour obtenir uniquement les adresses IP des interfaces actives.

QNetworkInterface renvoie également l’adresse matérielle de l’interface via la fonction hardwareAddress().

Tous les systèmes d’exploitation ne prennent pas en charge toutes les fonctionnalités. Seules les adresses IPv4 sont garanties d’être répertoriées par cette classe sur toutes les plateformes. En particulier, la liste des adresses IPv6 n’est prise en charge que sous Windows, Linux, macOS et les BSD. De même, le type d’interface renvoyé par type() peut ne pas être disponible sur toutes les plateformes.

Remarque : sous Android, le type d'interface est toujours indiqué comme « Unknown », car la plateforme ne fournit pas d'informations sur le type de matériel pour les interfaces physiques.

Voir également QNetworkAddressEntry.

Documentation sur les types de membres

enum QNetworkInterface::InterfaceFlag
flags QNetworkInterface::InterfaceFlags

Spécifie les indicateurs associés à cette interface réseau. Les valeurs possibles sont les suivantes :

ConstanteValeurDescription
QNetworkInterface::IsUp0x1l'interface réseau est « active » – activée par une intervention administrative
QNetworkInterface::IsRunning0x2l'interface réseau est opérationnelle : configurée en mode « up » et (généralement) physiquement connectée à un réseau
QNetworkInterface::CanBroadcast0x4l'interface réseau fonctionne en mode diffusion
QNetworkInterface::IsLoopBack0x8l'interface réseau est une interface de bouclage : c'est-à-dire une interface virtuelle dont la destination est l'ordinateur hôte lui-même
QNetworkInterface::IsPointToPoint0x10l'interface réseau est une interface point à point : c'est-à-dire qu'il n'existe qu'une seule autre adresse directement accessible par celle-ci.
QNetworkInterface::CanMulticast0x20l'interface réseau prend en charge la multidiffusion

Notez qu'une interface réseau ne peut pas être à la fois de type diffusion et point à point.

Le type `InterfaceFlags` est un `typedef` pour ` QFlags<InterfaceFlag>`. Il stocke une combinaison OR de valeurs `InterfaceFlag`.

enum QNetworkInterface::InterfaceType

Spécifie le type de matériel (couche PHY, niveau 1 du modèle OSI) correspondant à cette interface, si celui-ci a pu être déterminé. Les types d’interface qui ne figurent pas parmi ceux énumérés ci-dessous seront généralement répertoriés comme « Inconnu », bien que de futures versions de Qt puissent ajouter de nouvelles valeurs d’énumération.

Les valeurs possibles sont :

ConstanteValeurDescription
QNetworkInterface::Unknown0Le type d’interface n’a pas pu être déterminé ou ne correspond à aucun des types répertoriés.
QNetworkInterface::Loopback1L'interface de bouclage virtuelle, à laquelle sont attribuées les adresses IP de bouclage (127.0.0.1, ::1).
QNetworkInterface::Virtual2Un type d’interface identifié comme virtuel, mais qui ne correspond à aucun des autres types possibles. Par exemple, les interfaces de tunnel sont (actuellement) détectées comme des interfaces virtuelles.
QNetworkInterface::Ethernet3Les interfaces Ethernet IEEE 802.3, bien que sur de nombreux systèmes, d’autres types d’interfaces IEEE 802 puissent également être détectées comme des interfaces Ethernet (notamment le Wi-Fi).
QNetworkInterface::Wifi8Les interfaces Wi-Fi IEEE 802.11. Notez que sur certains systèmes, la commande « QNetworkInterface » peut ne pas être en mesure de distinguer l’Ethernet classique du Wi-Fi et ne renverra pas cette valeur d’énumération.
QNetworkInterface::Ieee80211WifiUn alias pour le Wi-Fi.
QNetworkInterface::CanBus5Interfaces de bus Controller Area Network (CAN) ISO 11898, généralement présentes sur les systèmes automobiles.
QNetworkInterface::Fddi7Interface ANSI X3T12 Fiber Distributed Data Interface, un réseau local par fibres optiques.
QNetworkInterface::Ppp6Interfaces de protocole point à point (PPP), établissant une connexion directe entre deux nœuds via une couche de transport inférieure (souvent une liaison série par radio ou une ligne physique).
QNetworkInterface::Slip4Interfaces du protocole Internet sur ligne série (SLIP).
QNetworkInterface::Phonet9Interfaces utilisant la famille de sockets Linux Phonet, pour la communication avec des modems cellulaires. Consultez la documentation du noyau Linux pour plus d’informations.
QNetworkInterface::Ieee80215410Interfaces de réseau de zone personnelle (PAN) IEEE 802.15.4, autres que 6LoWPAN (voir ci-dessous).
QNetworkInterface::SixLoWPAN11Interfaces 6LoWPAN (IPv6 sur réseaux personnels sans fil à faible consommation), qui fonctionnent sur la couche physique IEEE 802.15.4, mais disposent de schémas de compression d’en-tête spécifiques pour IPv6 et UDP. Ce type d’interface est souvent utilisé pour les réseaux maillés.
QNetworkInterface::Ieee8021612Réseau métropolitain sans fil IEEE 802.16, également connu sous le nom commercial « WiMAX ».
QNetworkInterface::Ieee139413Interfaces IEEE 1394 (également appelées « FireWire »).

Documentation sur les fonctions-membres

QNetworkInterface::QNetworkInterface()

Crée un objet d'interface réseau vide.

QNetworkInterface::QNetworkInterface(const QNetworkInterface &other)

Crée une copie de l'objet `QNetworkInterface` contenu dans ` other`.

[noexcept] QNetworkInterface::~QNetworkInterface()

Libère les ressources associées à l'objet ` QNetworkInterface `.

QList<QNetworkAddressEntry> QNetworkInterface::addressEntries() const

Renvoie la liste des adresses IP attribuées à cette interface, ainsi que les masques de réseau et les adresses de diffusion associés.

Si le masque de réseau, l'adresse de diffusion ou d'autres informations ne sont pas nécessaires, vous pouvez appeler la fonction ` allAddresses()` pour obtenir uniquement les adresses IP des interfaces actives.

[static] QList<QHostAddress> QNetworkInterface::allAddresses()

Cette fonction pratique renvoie toutes les adresses IP détectées sur la machine hôte. Elle revient à appeler ` addressEntries()` sur tous les objets renvoyés par ` allInterfaces()` qui se trouvent dans l'état « QNetworkInterface::IsUp » afin d'obtenir des listes d'objets ` QNetworkAddressEntry `, puis à appeler ` QNetworkAddressEntry::ip()` sur chacun d'entre eux.

[static] QList<QNetworkInterface> QNetworkInterface::allInterfaces()

Renvoie la liste de toutes les interfaces réseau détectées sur la machine hôte. En cas d'échec, elle renvoie une liste vide.

QNetworkInterface::InterfaceFlags QNetworkInterface::flags() const

Renvoie les indicateurs associés à cette interface réseau.

QString QNetworkInterface::hardwareAddress() const

Renvoie l'adresse matérielle de bas niveau de cette interface. Sur les interfaces Ethernet, il s'agit d'une adresse MAC sous forme de chaîne de caractères, séparée par des deux-points.

D'autres types d'interfaces peuvent utiliser d'autres types d'adresses matérielles. Les implémentations ne doivent pas supposer que cette fonction renvoie une adresse MAC valide.

Voir également type().

QString QNetworkInterface::humanReadableName() const

Renvoie le nom lisible par l'utilisateur de cette interface réseau sous Windows, tel que « Connexion au réseau local », si ce nom a pu être déterminé. Si ce n'est pas le cas, cette fonction renvoie la même valeur que la fonction ` name()`. Le nom lisible par l'utilisateur est un nom que l'utilisateur peut modifier dans le Panneau de configuration de Windows ; il peut donc changer pendant l'exécution du programme.

Sous Unix, cette fonction renvoie actuellement toujours la même valeur que name(), car les systèmes Unix ne stockent pas de configuration pour les noms lisibles par l'utilisateur.

int QNetworkInterface::index() const

Renvoie l'index système de l'interface, s'il est connu. Il s'agit d'un entier attribué par le système d'exploitation pour identifier cette interface ; il ne change généralement pas. Il correspond au champ « scope ID » des adresses IPv6.

Si l'index n'est pas connu, cette fonction renvoie 0.

[static] QNetworkInterface QNetworkInterface::interfaceFromIndex(int index)

Renvoie un objet ` QNetworkInterface ` correspondant à l'interface dont l'identifiant interne est ` index`. Les interfaces réseau possèdent un identifiant unique appelé « index d'interface », qui permet de les distinguer des autres interfaces du système. Souvent, cette valeur est attribuée de manière progressive ; ainsi, les interfaces qui sont supprimées puis rajoutées se voient attribuer une valeur différente à chaque fois.

Cet index figure également dans le champ « scope ID » de l'adresse IPv6.

[static] QNetworkInterface QNetworkInterface::interfaceFromName(const QString &name)

Renvoie un objet ` QNetworkInterface ` correspondant à l'interface nommée ` name`. Si cette interface n'existe pas, cette fonction renvoie un objet ` QNetworkInterface ` non valide.

La chaîne name peut être soit un nom d’interface réel (tel que « eth0 » ou « en1 »), soit un index d’interface sous forme de chaîne (« 1 », « 2 », etc.).

Voir également name() et isValid().

[static] int QNetworkInterface::interfaceIndexFromName(const QString &name)

Renvoie l'index de l'interface dont le nom est « name » ou 0 s'il n'existe aucune interface portant ce nom. Cette fonction devrait produire le même résultat que le code suivant, mais s'exécutera probablement plus rapidement.

    QNetworkInterface::interfaceFromName(name).index()

Voir également interfaceFromName(), interfaceNameFromIndex() et QNetworkDatagram::interfaceIndex().

[static] QString QNetworkInterface::interfaceNameFromIndex(int index)

Renvoie le nom de l'interface dont l'index est index ou une chaîne vide s'il n'existe aucune interface portant cet index. Cette fonction devrait produire le même résultat que le code suivant, mais s'exécutera probablement plus rapidement.

    QNetworkInterface::interfaceFromIndex(index).name()

Voir également interfaceFromIndex(), interfaceIndexFromName() et QNetworkDatagram::interfaceIndex().

bool QNetworkInterface::isValid() const

Renvoie « true » si cet objet « QNetworkInterface » contient des informations valides concernant une interface réseau.

int QNetworkInterface::maximumTransmissionUnit() const

Renvoie l'unité de transmission maximale sur cette interface, si elle est connue, ou 0 dans le cas contraire.

L'unité de transmission maximale correspond au plus grand paquet pouvant être envoyé sur cette interface sans entraîner de fragmentation au niveau de la liaison. Les applications peuvent utiliser cette valeur pour calculer la taille de la charge utile pouvant tenir dans un datagramme UDP non fragmenté. N’oubliez pas de soustraire les tailles des en-têtes utilisés dans vos communications sur cette interface, par exemple TCP (20 octets) ou UDP (12), IPv4 (20) ou IPv6 (40, en l’absence de compression des en-têtes), lorsque vous calculez la taille de la charge utile que vous pouvez transmettre. Notez également que la MTU sur l'ensemble du chemin (la MTU de chemin) vers la destination peut être inférieure à la MTU de l'interface.

Voir également QUdpSocket.

QString QNetworkInterface::name() const

Renvoie le nom de cette interface réseau. Sur les systèmes Unix, il s'agit d'une chaîne de caractères contenant le type de l'interface et, éventuellement, un numéro d'ordre, tel que « eth0 », « lo » ou « pcn0 ». Sous Windows, il s'agit d'un identifiant interne qui ne peut pas être modifié par l'utilisateur.

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

Permute cette instance d'interface réseau avec celle de other. Cette opération est très rapide et ne rencontre jamais d'échec.

QNetworkInterface::InterfaceType QNetworkInterface::type() const

Renvoie le type de cette interface, s'il a pu être déterminé. S'il n'a pas pu être déterminé, cette fonction renvoie « QNetworkInterface::Unknown ».

Voir également hardwareAddress().

QNetworkInterface &QNetworkInterface::operator=(const QNetworkInterface &other)

Copie le contenu de l'objet « QNetworkInterface » contenu dans « other » dans celui-ci.

Éléments non membres associés

QDebug operator<<(QDebug debug, const QNetworkInterface &networkInterface)

Écrit l'QNetworkInterface networkInterface dans le flux et renvoie une référence au flux debug.

© 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.