QNetworkInterface Class
La classe QNetworkInterface fournit une liste des adresses IP et des interfaces réseau de l'hôte. Plus d'informations...
| En-tête : | #include <QNetworkInterface> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Network)target_link_libraries(mytarget PRIVATE Qt6::Network) |
| qmake : | QT += network |
- Liste de tous les membres, y compris les membres hérités
- QNetworkInterface fait partie de Network Programming API et de Implicitly Shared Classes.
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) |
Non-membres associés
| QDebug | operator<<(QDebug debug, const QNetworkInterface &networkInterface) |
Description détaillée
QNetworkInterface représente une interface réseau attachée à l'hôte sur lequel le programme est exécuté. Chaque interface réseau peut contenir zéro ou plusieurs adresses IP, chacune d'entre elles étant éventuellement associée à un masque de réseau et/ou à une adresse de diffusion. La liste de ces trios peut être obtenue à l'aide de addressEntries(). Si le masque de réseau, les adresses de diffusion ou d'autres informations ne sont pas nécessaires, il est possible d'utiliser la fonction de commodité allAddresses() pour obtenir uniquement les adresses IP des interfaces actives.
QNetworkInterface indique également l'adresse matérielle de l'interface avec hardwareAddress().
Tous les systèmes d'exploitation ne permettent pas de signaler toutes les caractéristiques. Seules les adresses IPv4 sont garanties pour être listées par cette classe dans toutes les plateformes. En particulier, la liste des adresses IPv6 n'est prise en charge que par Windows, Linux, macOS et les BSD.
Voir également QNetworkAddressEntry.
Documentation des types de membres
enum QNetworkInterface::InterfaceFlag
flags QNetworkInterface::InterfaceFlags
Spécifie les drapeaux associés à cette interface réseau. Les valeurs possibles sont les suivantes :
| Constante | Constante Valeur | Valeur constante Description |
|---|---|---|
QNetworkInterface::IsUp | 0x1 | l'interface réseau est "up" - activée par une action administrative |
QNetworkInterface::IsRunning | 0x2 | l'interface réseau est opérationnelle : configurée "up" et (généralement) physiquement connectée à un réseau |
QNetworkInterface::CanBroadcast | 0x4 | l'interface réseau fonctionne en mode diffusion |
QNetworkInterface::IsLoopBack | 0x8 | l'interface réseau est une interface de bouclage : il s'agit d'une interface virtuelle dont la destination est l'ordinateur hôte lui-même |
QNetworkInterface::IsPointToPoint | 0x10 | l'interface réseau est une interface point à point : c'est-à-dire qu'il n'y a qu'une seule autre adresse qui peut être atteinte directement par cette interface. |
QNetworkInterface::CanMulticast | 0x20 | l'interface réseau prend en charge la multidiffusion |
Notez qu'une interface réseau ne peut pas être à la fois basée sur la diffusion et point à point.
Le type InterfaceFlags est un typedef pour QFlags<InterfaceFlag>. Il stocke une combinaison OU de valeurs InterfaceFlag.
enum QNetworkInterface::InterfaceType
Spécifie le type de matériel (couche PHY, niveau OSI 1) de cette interface, s'il a pu être déterminé. Les types d'interface qui ne font pas partie de la liste ci-dessous seront généralement répertoriés comme inconnus, bien que les versions futures de Qt puissent ajouter de nouvelles valeurs d'énumération.
Les valeurs possibles sont les suivantes :
| Constante | Valeur | Description |
|---|---|---|
QNetworkInterface::Unknown | 0 | Le type d'interface n'a pas pu être déterminé ou n'est pas l'un des autres types répertoriés. |
QNetworkInterface::Loopback | 1 | L'interface de bouclage virtuelle, à laquelle sont attribuées les adresses IP de bouclage (127.0.0.1, ::1). |
QNetworkInterface::Virtual | 2 | Un type d'interface déterminé comme étant virtuel, mais qui n'est pas l'un des autres types possibles. Par exemple, les interfaces tunnel sont (actuellement) détectées comme virtuelles. |
QNetworkInterface::Ethernet | 3 | Interfaces Ethernet IEEE 802.3, bien que sur de nombreux systèmes, d'autres types d'interfaces IEEE 802 puissent également être détectés comme Ethernet (en particulier Wi-Fi). |
QNetworkInterface::Wifi | 8 | Interfaces Wi-Fi IEEE 802.11. Notez que sur certains systèmes, QNetworkInterface peut être incapable de distinguer l'Ethernet normal du Wi-Fi et ne renverra pas cette valeur enum. |
QNetworkInterface::Ieee80211 | Wifi | Un alias pour WiFi. |
QNetworkInterface::CanBus | 5 | Interfaces de bus ISO 11898 Controller Area Network, que l'on trouve généralement dans les systèmes automobiles. |
QNetworkInterface::Fddi | 7 | ANSI X3T12 Fiber Distributed Data Interface, un réseau local sur fibres optiques. |
QNetworkInterface::Ppp | 6 | Interfaces de protocole point à point, établissant une connexion directe entre deux nœuds par l'intermédiaire d'une couche de transport inférieure (souvent série par radio ou ligne physique). |
QNetworkInterface::Slip | 4 | Interfaces de protocole Internet de ligne série. |
QNetworkInterface::Phonet | 9 | Interfaces utilisant la famille de sockets Linux Phonet, pour la communication avec les modems cellulaires. Voir la documentation du noyau Linux pour plus d'informations. |
QNetworkInterface::Ieee802154 | 10 | Interfaces de réseau personnel IEEE 802.15.4, autres que 6LoWPAN (voir ci-dessous). |
QNetworkInterface::SixLoWPAN | 11 | Les interfaces 6LoWPAN (IPv6 over Low-power Wireless Personal Area Networks), qui fonctionnent sur le PHY IEEE 802.15.4, mais ont des 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::Ieee80216 | 12 | IEEE 802.16 Wireless Metropolitan Area Network, également connu sous le nom commercial de "WiMAX". |
QNetworkInterface::Ieee1394 | 13 | Interfaces IEEE 1394 (alias "FireWire"). |
Documentation sur les fonctions des membres
QNetworkInterface::QNetworkInterface()
Construit 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 que possède cette interface, ainsi que les masques de réseau et les adresses de diffusion qui leur sont 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 de commodité renvoie toutes les adresses IP trouvées sur la machine hôte. Elle équivaut à appeler addressEntries() sur tous les objets retournés par allInterfaces() qui sont dans l'état QNetworkInterface::IsUp pour obtenir des listes d'objets QNetworkAddressEntry, puis à appeler QNetworkAddressEntry::ip() sur chacun d'entre eux.
[static] QList<QNetworkInterface> QNetworkInterface::allInterfaces()
Renvoie une liste de toutes les interfaces réseau trouvées sur la machine hôte. En cas d'échec, il renvoie une liste contenant zéro élément.
QNetworkInterface::InterfaceFlags QNetworkInterface::flags() const
Renvoie les drapeaux associés à cette interface réseau.
QString QNetworkInterface::hardwareAddress() const
Renvoie l'adresse matérielle de bas niveau de cette interface. Pour 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.
Les autres types d'interface peuvent avoir d'autres types d'adresses matérielles. Les implémentations ne doivent pas dépendre du fait que cette fonction renvoie une adresse MAC valide.
Voir aussi type().
QString QNetworkInterface::humanReadableName() const
Renvoie le nom lisible par l'homme de cette interface réseau sous Windows, tel que "Local Area Connection", si le nom a pu être déterminé. Dans le cas contraire, cette fonction renvoie la même chose que name(). Le nom lisible par l'homme 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 toujours la même chose que name(), car les systèmes Unix ne stockent pas de configuration pour les noms lisibles par l'homme.
int QNetworkInterface::index() const
Renvoie l'index système de l'interface, s'il est connu. Il s'agit d'un nombre entier attribué par le système d'exploitation pour identifier cette interface et qui ne change généralement pas. Il correspond au champ scope ID dans les adresses IPv6.
Si l'index n'est pas connu, cette fonction renvoie 0.
[static] QNetworkInterface QNetworkInterface::interfaceFromIndex(int index)
Renvoie un objet QNetworkInterface pour l'interface dont l'ID interne est index. Les interfaces réseau ont un identifiant unique appelé "index d'interface" qui permet de les distinguer des autres interfaces du système. Souvent, cette valeur est attribuée progressivement et les interfaces qui sont supprimées puis ajoutées à nouveau reçoivent une valeur différente à chaque fois.
Cet index se trouve également dans le champ scope ID de l'adresse IPv6.
[static] QNetworkInterface QNetworkInterface::interfaceFromName(const QString &name)
Renvoie un objet QNetworkInterface pour 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 aussi 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'y a pas d'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 aussi 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'y a pas d'interface avec 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 aussi interfaceFromIndex(), interfaceIndexFromName() et QNetworkDatagram::interfaceIndex().
bool QNetworkInterface::isValid() const
Renvoie true si cet objet QNetworkInterface contient des informations valables sur une interface réseau.
int QNetworkInterface::maximumTransmissionUnit() const
Renvoie l'unité de transmission maximale sur cette interface, si elle est connue, ou 0 sinon.
L'unité de transmission maximale est le plus gros paquet qui peut être envoyé sur cette interface sans subir de fragmentation au niveau du lien. Les applications peuvent utiliser cette valeur pour calculer la taille de la charge utile d'un datagramme UDP non fragmenté. N'oubliez pas de soustraire la taille des en-têtes utilisés dans votre communication sur l'interface, par exemple TCP (20 octets) ou UDP (12), IPv4 (20) ou IPv6 (40, en l'absence d'une forme de compression des en-têtes), lorsque vous calculez la taille de la charge utile que vous pouvez transmettre. Notez également que le MTU le long du chemin complet (le Path MTU) jusqu'à la destination peut être plus petit que le 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 contenant le type de l'interface et éventuellement un numéro de séquence, tel que "eth0", "lo" ou "pcn0". Sous Windows, il s'agit d'un identifiant interne qui ne peut être modifié par l'utilisateur.
[noexcept] void QNetworkInterface::swap(QNetworkInterface &other)
Remplace cette instance d'interface réseau par other. Cette opération est très rapide et n'échoue jamais.
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.
Non-membres apparentés
QDebug operator<<(QDebug debug, const QNetworkInterface &networkInterface)
Écrit le 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.