QNetworkInterface Class

Die Klasse QNetworkInterface liefert eine Liste der IP-Adressen und Netzwerkschnittstellen des Hosts. Mehr...

Kopfzeile: #include <QNetworkInterface>
CMake: find_package(Qt6 REQUIRED COMPONENTS Network)
target_link_libraries(mytarget PRIVATE Qt6::Network)
qmake: QT += network

Hinweis: Alle Funktionen in dieser Klasse sind reentrant.

Öffentliche Typen

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

Öffentliche Funktionen

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)

Statische öffentliche Mitglieder

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)

Detaillierte Beschreibung

QNetworkInterface stellt eine Netzwerkschnittstelle dar, die mit dem Host verbunden ist, auf dem das Programm ausgeführt wird. Jede Netzwerkschnittstelle kann null oder mehr IP-Adressen enthalten, von denen jede optional mit einer Netzmaske und/oder einer Broadcast-Adresse verbunden ist. Die Liste solcher Trios kann mit addressEntries() abgefragt werden. Wenn die Netzmaske oder die Broadcast-Adressen oder andere Informationen nicht erforderlich sind, kann alternativ die Funktion allAddresses() verwendet werden, um nur die IP-Adressen der aktiven Schnittstellen zu erhalten.

QNetworkInterface meldet auch die Hardware-Adresse der Schnittstelle mit hardwareAddress().

Nicht alle Betriebssysteme unterstützen die Meldung aller Merkmale. Nur die IPv4-Adressen werden von dieser Klasse auf allen Plattformen garantiert aufgelistet. Insbesondere die Auflistung von IPv6-Adressen wird nur unter Windows, Linux, macOS und BSD unterstützt.

Siehe auch QNetworkAddressEntry.

Dokumentation der Mitgliedstypen

enum QNetworkInterface::InterfaceFlag
flags QNetworkInterface::InterfaceFlags

Gibt die mit dieser Netzwerkschnittstelle verbundenen Flags an. Die möglichen Werte sind:

KonstanteWertBeschreibung
QNetworkInterface::IsUp0x1die Netzwerkschnittstelle ist "up" - durch administrative Maßnahmen aktiviert
QNetworkInterface::IsRunning0x2die Netzwerkschnittstelle ist betriebsbereit: konfiguriert "up" und (normalerweise) physisch mit einem Netzwerk verbunden
QNetworkInterface::CanBroadcast0x4die Netzwerkschnittstelle arbeitet im Broadcast-Modus
QNetworkInterface::IsLoopBack0x8Die Netzwerkschnittstelle ist eine Loopback-Schnittstelle, d. h. es handelt sich um eine virtuelle Schnittstelle, deren Ziel der Host-Computer selbst ist.
QNetworkInterface::IsPointToPoint0x10Die Netzwerkschnittstelle ist eine Punkt-zu-Punkt-Schnittstelle, d. h. es gibt nur eine einzige andere Adresse, die direkt über sie erreicht werden kann.
QNetworkInterface::CanMulticast0x20die Netzwerkschnittstelle unterstützt Multicasting

Beachten Sie, dass eine Netzwerkschnittstelle nicht gleichzeitig Broadcast-basiert und Punkt-zu-Punkt sein kann.

Der Typ InterfaceFlags ist ein Typedef für QFlags<InterfaceFlag>. Er speichert eine ODER-Kombination von InterfaceFlag-Werten.

enum QNetworkInterface::InterfaceType

Gibt die Art der Hardware (PHY-Schicht, OSI-Ebene 1) an, die diese Schnittstelle darstellt, sofern sie ermittelt werden konnte. Schnittstellentypen, die nicht zu den unten aufgeführten gehören, werden in der Regel als Unknown aufgeführt, obwohl zukünftige Versionen von Qt neue Aufzählungswerte hinzufügen können.

Die möglichen Werte sind:

KonstanteWertBeschreibung
QNetworkInterface::Unknown0Der Schnittstellentyp konnte nicht ermittelt werden oder gehört nicht zu den anderen aufgeführten Typen.
QNetworkInterface::Loopback1Die virtuelle Loopback-Schnittstelle, der die Loopback-IP-Adressen zugewiesen sind (127.0.0.1, ::1).
QNetworkInterface::Virtual2Ein Schnittstellentyp, der als virtuell bestimmt wurde, aber keiner der anderen möglichen Typen ist. Zum Beispiel werden Tunnelschnittstellen (derzeit) als virtuelle Schnittstellen erkannt.
QNetworkInterface::Ethernet3IEEE 802.3 Ethernet-Schnittstellen, obwohl auf vielen Systemen auch andere Arten von IEEE 802-Schnittstellen als Ethernet erkannt werden können (insbesondere Wi-Fi).
QNetworkInterface::Wifi8IEEE 802.11 Wi-Fi-Schnittstellen. Beachten Sie, dass QNetworkInterface auf einigen Systemen möglicherweise nicht in der Lage ist, reguläres Ethernet von Wi-Fi zu unterscheiden und diesen Enum-Wert nicht zurückgibt.
QNetworkInterface::Ieee80211WifiEin Alias für WiFi.
QNetworkInterface::CanBus5ISO 11898 Controller Area Network-Busschnittstellen, normalerweise in Automobilsystemen zu finden.
QNetworkInterface::Fddi7ANSI X3T12 Fiber Distributed Data Interface, ein lokales Netzwerk über optische Fasern.
QNetworkInterface::Ppp6Punkt-zu-Punkt-Protokoll-Schnittstellen, die eine direkte Verbindung zwischen zwei Knoten über eine niedrigere Transportschicht herstellen (oft seriell über Funk oder physische Leitung).
QNetworkInterface::Slip4Serial Line Internet Protocol-Schnittstellen.
QNetworkInterface::Phonet9Schnittstellen, die die Linux Phonet-Socket-Familie verwenden, für die Kommunikation mit Mobilfunkmodems. Weitere Informationen finden Sie in der Linux-Kernel-Dokumentation.
QNetworkInterface::Ieee80215410IEEE 802.15.4 Personal Area Network Schnittstellen, außer 6LoWPAN (siehe unten).
QNetworkInterface::SixLoWPAN116LoWPAN (IPv6 over Low-power Wireless Personal Area Networks) Schnittstellen, die mit IEEE 802.15.4 PHY arbeiten, aber spezielle Header-Kompressionsverfahren für IPv6 und UDP haben. Diese Art von Schnittstelle wird häufig für Mesh-Netzwerke verwendet.
QNetworkInterface::Ieee8021612IEEE 802.16 Wireless Metropolitan Area Network, auch bekannt unter dem Handelsnamen "WiMAX".
QNetworkInterface::Ieee139413IEEE 1394-Schnittstellen (auch bekannt unter dem Namen "FireWire").

Dokumentation der Mitgliederfunktionen

QNetworkInterface::QNetworkInterface()

Konstruiert ein leeres Netzwerkschnittstellenobjekt.

QNetworkInterface::QNetworkInterface(const QNetworkInterface &other)

Erzeugt eine Kopie des in other enthaltenen QNetworkInterface-Objekts.

[noexcept] QNetworkInterface::~QNetworkInterface()

Gibt die Ressourcen frei, die mit dem Objekt QNetworkInterface verbunden sind.

QList<QNetworkAddressEntry> QNetworkInterface::addressEntries() const

Gibt die Liste der IP-Adressen, die diese Schnittstelle besitzt, zusammen mit den zugehörigen Netzmasken und Broadcast-Adressen zurück.

Wenn die Netzmaske oder die Broadcast-Adresse oder andere Informationen nicht erforderlich sind, können Sie die Funktion allAddresses() aufrufen, um nur die IP-Adressen der aktiven Schnittstellen zu erhalten.

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

Diese Komfortfunktion gibt alle auf dem Host-Rechner gefundenen IP-Adressen zurück. Sie ist gleichbedeutend mit dem Aufruf von addressEntries() für alle von allInterfaces() zurückgegebenen Objekte, die sich im Zustand QNetworkInterface::IsUp befinden, um Listen von QNetworkAddressEntry Objekten zu erhalten, und dem anschließenden Aufruf von QNetworkAddressEntry::ip() für jedes dieser Objekte.

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

Gibt eine Auflistung aller auf dem Host-Rechner gefundenen Netzwerkschnittstellen zurück. Im Falle eines Fehlers wird eine Liste mit Nullelementen zurückgegeben.

QNetworkInterface::InterfaceFlags QNetworkInterface::flags() const

Gibt die mit dieser Netzwerkschnittstelle verbundenen Flags zurück.

QString QNetworkInterface::hardwareAddress() const

Gibt die Low-Level-Hardwareadresse für diese Schnittstelle zurück. Bei Ethernet-Schnittstellen ist dies eine MAC-Adresse in String-Darstellung, getrennt durch Doppelpunkte.

Andere Schnittstellentypen können andere Arten von Hardwareadressen haben. Implementierungen sollten sich nicht darauf verlassen, dass diese Funktion eine gültige MAC-Adresse zurückgibt.

Siehe auch type().

QString QNetworkInterface::humanReadableName() const

Gibt den für Menschen lesbaren Namen dieser Netzwerkschnittstelle unter Windows zurück, z. B. "Local Area Connection", wenn der Name ermittelt werden konnte. Wenn dies nicht der Fall ist, gibt diese Funktion dasselbe zurück wie name(). Der menschenlesbare Name ist ein Name, den der Benutzer in der Windows-Systemsteuerung ändern kann, er kann sich also während der Ausführung des Programms ändern.

Unter Unix gibt diese Funktion derzeit immer dasselbe zurück wie name(), da Unix-Systeme keine Konfiguration für menschenlesbare Namen speichern.

int QNetworkInterface::index() const

Gibt den Systemindex der Schnittstelle zurück, falls bekannt. Dies ist eine ganze Zahl, die vom Betriebssystem zugewiesen wird, um diese Schnittstelle zu identifizieren, und die sich im Allgemeinen nicht ändert. Er entspricht dem Feld scope ID in IPv6-Adressen.

Wenn der Index nicht bekannt ist, gibt diese Funktion 0 zurück.

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

Gibt ein QNetworkInterface Objekt für die Schnittstelle zurück, deren interne ID index ist. Netzwerkschnittstellen haben eine eindeutige Kennung, den "Schnittstellenindex", um sie von anderen Schnittstellen im System zu unterscheiden. Oft wird dieser Wert fortlaufend zugewiesen, und Schnittstellen, die entfernt und dann wieder hinzugefügt werden, erhalten jedes Mal einen anderen Wert.

Dieser Index ist auch im Scope-ID-Feld der IPv6-Adresse zu finden.

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

Gibt ein QNetworkInterface Objekt für die Schnittstelle mit dem Namen name zurück. Wenn keine solche Schnittstelle existiert, gibt diese Funktion ein ungültiges QNetworkInterface Objekt zurück.

Die Zeichenkette name kann entweder ein tatsächlicher Schnittstellenname (wie "eth0" oder "en1") oder ein Schnittstellenindex in Form einer Zeichenkette ("1", "2" usw.) sein.

Siehe auch name() und isValid().

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

Gibt den Index der Schnittstelle zurück, deren Name name ist, oder 0, wenn es keine Schnittstelle mit diesem Namen gibt. Diese Funktion sollte das gleiche Ergebnis liefern wie der folgende Code, wird aber wahrscheinlich schneller ausgeführt.

    QNetworkInterface::interfaceFromName(name).index()

Siehe auch interfaceFromName(), interfaceNameFromIndex(), und QNetworkDatagram::interfaceIndex().

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

Gibt den Namen der Schnittstelle zurück, deren Index index ist, oder einen leeren String, wenn es keine Schnittstelle mit diesem Index gibt. Diese Funktion sollte das gleiche Ergebnis liefern wie der folgende Code, wird aber wahrscheinlich schneller ausgeführt.

    QNetworkInterface::interfaceFromIndex(index).name()

Siehe auch interfaceFromIndex(), interfaceIndexFromName(), und QNetworkDatagram::interfaceIndex().

bool QNetworkInterface::isValid() const

Gibt true zurück, wenn dieses QNetworkInterface Objekt gültige Informationen über eine Netzwerkschnittstelle enthält.

int QNetworkInterface::maximumTransmissionUnit() const

Gibt die maximale Übertragungseinheit auf dieser Schnittstelle zurück, wenn sie bekannt ist, oder sonst 0.

Die maximale Übertragungseinheit ist das größte Paket, das über diese Schnittstelle gesendet werden kann, ohne dass es zu einer Fragmentierung auf Link-Ebene kommt. Anwendungen können diesen Wert verwenden, um die Größe der Nutzlast zu berechnen, die in ein nicht fragmentiertes UDP-Datagramm passt. Denken Sie daran, die Größe der Header abzuziehen, die in Ihrer Kommunikation über die Schnittstelle verwendet werden, z. B. TCP (20 Byte) oder UDP (12), IPv4 (20) oder IPv6 (40, wenn keine Form der Header-Komprimierung vorhanden ist), wenn Sie berechnen, wie groß die Nutzlast ist, die Sie übertragen können. Beachten Sie auch, dass die MTU entlang des gesamten Pfades (die Pfad-MTU) zum Ziel kleiner sein kann als die MTU der Schnittstelle.

Siehe auch QUdpSocket.

QString QNetworkInterface::name() const

Gibt den Namen dieser Netzwerkschnittstelle zurück. Auf Unix-Systemen ist dies eine Zeichenkette, die den Typ der Schnittstelle und optional eine laufende Nummer enthält, z. B. "eth0", "lo" oder "pcn0". Unter Windows handelt es sich um eine interne ID, die vom Benutzer nicht geändert werden kann.

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

Tauscht diese Netzwerkschnittstelleninstanz mit other aus. Dieser Vorgang ist sehr schnell und schlägt nie fehl.

QNetworkInterface::InterfaceType QNetworkInterface::type() const

Gibt den Typ dieser Schnittstelle zurück, sofern er ermittelt werden konnte. Konnte er nicht ermittelt werden, gibt diese Funktion QNetworkInterface::Unknown zurück.

Siehe auch hardwareAddress().

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

Kopiert den Inhalt des Objekts QNetworkInterface, das in other enthalten ist, in dieses Objekt.

Verwandte Nicht-Mitglieder

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

Schreibt die Datei QNetworkInterface networkInterface in den Stream und gibt einen Verweis auf den Stream debug zurück.

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