J'essaie d'obtenir une adresse MAC pour tous les ports physiques disponibles sur mon ordinateur portable pour Windows / Linux / Mac OS. Je veux aussi vérifier si je peux détecter la connexion physique / la déconnexion du câble réseau.
J'ai essayé d'utiliser des API QNetworkInterface, mais cela me fournit toutes les interfaces physiques et logiques. Je suis incapable d'obtenir comment je peux différencier les ports physiques. Avons-nous des drapeaux pour le faire? P>
J'ai essayé du code p> suivi est le résultat de l'interface réseau, du nom, du type et de l'adresse matérielle de mon Mac p> (ISUP | ISRUNNING | CANBRODODCAST | CANMULTRICAST) "EN0" QNetworkInterface :: wifi "xx: xx: xx: xx: xx: xx" ps: "xx: xx: xx: xx: xx: xx "Est-ce que leur adresse MAC p> p>
(ISUP | ISRUNNING | CANBRODODCAST | CANMulticast) "P2P0" QNetworkInterface :: wifi "xx: xx: xx: xx: xx: xx"
(ISUP | ISRUNNING | CANBRODFAST | CANMULTRICAST) "AWDL0" QNetworkInterface :: wifi "xx: xx: xx: xx: xx: xx"
(ISUP | ISRUNNING | CANBRODODCAST | CANMULTICAST) "EN1" QNetworkInterface :: Ethernet "XX: XX: XX: XX: XX: XX"
(ISUP | ISRUNNING | CANBRODLAST | CANMULTRICAST) "EN2" QNetworkInterface :: Ethernet "xx: xx: xx: xx: xx: xx"
(ISUP | ISRUNNING | CANBRODODCAST | CANMULTRICAST) "Bridge0" QNetWorkInterface :: Unknown "xx: xx: xx: xx: xx: xx" p>
3 Réponses :
essayer qnetworkconfigurationmanager https://doc.qt.io/qt-5/qnetworkconfigurationManager.htmlLe_fr > p>
Je l'avais essayé mais malheureusement, il ne se distingue pas entre des interfaces réseau physiques et logiques. Avez-vous des informations détaillées? Apprécierait si vous pouvez partager.
Quoi de la vérification du type d'interface? QNetworkInterface :: InterfaceType P>
Il comprend uniquement des adaptateurs d'hôte virtuels également en tant que type Ethernet.
J'ai une solution. Après avoir fait beaucoup d'analyse, je suis à la conclusion que QT ne peut pas obtenir de détails plus profonds du système d'exploitation. Nous devons toucher la couche d'OS pour atteindre la même chose.
File *fp = popen("lshw -class network | grep -A 1 \"bus info\" | grep name | awk -F': ' '{print $2}'", "r");