Qt-获取主机网络信息之QNetworkInterface

QNetworkInterface类提供了一个主机IP地址和网络接口的列表。

QNetworkInterface表示了当前程序正在运行时与主机绑定的一个网络接口。每个网络接口可能包含0个或者多个IP地址,每个IP地址都可选择性地与一个子网掩码和(或)一个广播地址相关联。这样的列表可以通过QNetworkInterface的addressEntries()方法获得。作为一种可选的方案是,当子网掩码或者广播地址不是必须的,可以使用allAddresses()便捷函数来仅仅获得IP地址。

注:QNetworkAddressEntry类存储了被网络接口所支持的一个IP地址,同时还有与之相关的子网掩码和广播地址。

QNetworkInterface还使用hardwareAddress()方法报告接口的硬件地址。

不是所有的操作系统都支持报告这些所有的特性。只有IPv4地址可以保证在所有平台上都能被这个类列举出来,尤其是IPv6地址的列举目前只支持Windows XP及相关版本、Linux、MacOS和BSDs。

相关参考:QNetworkAddressEntry.

成员函数:allAddresses() [static]

这个便利函数返回在主机上面找到的所有的IP地址。它相当于对allInterfaces()返回的所有对象调用addressEntries()来获取QHostAddress对象列表,然后对这些对象调用QHostAddress::ip()方法。

 1 #include "mainwindow.h"
 2 #include <QHostAddress>
 3 #include <QNetworkInterface>
 4 #include <QNetworkAddressEntry>
 5 #include <QDebug>
 6
 7 MainWindow::MainWindow(QWidget *parent)
 8     : QMainWindow(parent)
 9 {
10     QList<QHostAddress> list = QNetworkInterface::allAddresses();
11
12     for (int i = 0; i < list.size(); i++)
13     {
14         qDebug() << list.at(i);
15     }
16 }

成员函数:allInterfaces() [static]

返回一个在主机上找到的所有网络接口的列表。如果查找失败,则返回一个0个元素的列表。

 1 #include "mainwindow.h"
 2 #include <QHostAddress>
 3 #include <QNetworkInterface>
 4 #include <QNetworkAddressEntry>
 5 #include <QDebug>
 6
 7 MainWindow::MainWindow(QWidget *parent)
 8     : QMainWindow(parent)
 9 {
10     QList<QNetworkInterface> interface = QNetworkInterface::allInterfaces();
11
12     for (int i = 0; i < interface.size(); i++)
13     {
14         qDebug() << interface.at(i);
15         QNetworkInterface item = interface.at(i);
16         QList<QNetworkAddressEntry> entryList = item.addressEntries();
17         for (int j = 0; j < entryList.size(); j++)
18         {
19             qDebug() << "Item #" << j << entryList.at(j).ip();
20         }
21     }
22 }

成员函数:hardwareAddress() const

返回这个接口的底层硬件地址。对于以太网接口,这将是一个用字符串表示的MAC地址,通过冒号来分隔。其他接口类型可能使用其他类型的硬件地址。实现不要依靠这个函数来返回一个合法的MAC地址。

 1 #include "mainwindow.h"
 2 #include <QHostAddress>
 3 #include <QNetworkInterface>
 4 #include <QNetworkAddressEntry>
 5 #include <QDebug>
 6
 7 MainWindow::MainWindow(QWidget *parent)
 8     : QMainWindow(parent)
 9 {
10     QList<QNetworkInterface> interface = QNetworkInterface::allInterfaces();
11
12     for (int i = 0; i < interface.size(); i++)
13     {
14         QNetworkInterface item = interface.at(i);
15         qDebug() << item.hardwareAddress();
16     }
17 }

参考资料:《获取网络接口信息》-MyNote

Qt-获取主机网络信息之QNetworkInterface,布布扣,bubuko.com

时间: 2024-11-05 01:19:53

Qt-获取主机网络信息之QNetworkInterface的相关文章

Qt-获取主机网络信息之QNetworkAddressEntry

QNetworkAddressEntry类存储了一个网络接口所支持的一个IP地址,同时还有与之相关的子网掩码和广播地址. 每个网络接口可以包含0个或多个IP地址,这些IP地址可以分别关联一个子网掩码和(或)一个广播地址(取决于操作系统的支持). This class represents one such group. 1 #include "mainwindow.h" 2 #include <QHostAddress> 3 #include <QNetworkInt

使用WMI编程获取主机硬件信息(CPU_ID,硬盘、主板、BIOS序列号,Mac地址)

最近在公司实习,有个应用需要获取windows主机的一些硬件信息,在网上查阅了一些资料,大部分都是使用WMI编程来实现的. 因此小菜鸟自己也用WMI实现了一下,封装为函数GetUserInfo(),具体代码如下: 头文件UserInfo.h: 1 #pragma once 2 #include "stdafx.h" 3 #define _WIN32_DCOM 4 #include <comdef.h> 5 #include <Wbemidl.h> 6 # pra

Qt 获取Windows内存信息

通过调用Windows API来获取Windows 内存信息,并显示在界面上,通过与Windows 内存管理器对比可以看到结果是正确的. 实现的小工具的界面效果与内存管理器对比如下: 实现的完整代码: #pragma execution_character_set("utf-8") #ifndef QMEMORYINFO_H #define QMEMORYINFO_H #include <QtWidgets/QWidget> #include <QLabel>

使用gethostname()函数和gethostbyname()函数获取主机相关信息

from http://ty1992.blog.51cto.com/7098269/1685880 gethostname() : 返回本地主机的标准主机名. 原型如下: #include <unistd.h> int gethostname(char *name, size_t len); 参数说明: 这个函数需要两个参数: 接收缓冲区name,其长度必须为len字节或是更长,存获得的主机名. 接收缓冲区name的最大长度 返回值: 如果函数成功,则返回0.如果发生错误则返回-1.错误号存放

使用gethostnam()函数和gethostbyname()函数获取主机相关信息

gethostname() : 返回本地主机的标准主机名. 原型如下: #include <unistd.h> int gethostname(char *name, size_t len); 参数说明: 这个函数需要两个参数: 接收缓冲区name,其长度必须为len字节或是更长,存获得的主机名. 接收缓冲区name的最大长度 返回值: 如果函数成功,则返回0.如果发生错误则返回-1.错误号存放在外部变量errno中. gethostbyname()函数说明--用域名或主机名获取IP地址  

获取主机相关信息脚本

考核内容 awk 编辑文件抓取ip信息抓取登录用户执行脚本 原文地址:https://blog.51cto.com/14190777/2434108

Qt获取系统串口信息

打开注册表 菜单->运行 输入regedit 到目录 HKEY_LOCAL_MACHINE\\HARDWARE\\DEVICEMAP\\SERIALCOMM\\ 中,该目录下有的com口表示系统当前存在使用的com

mac os x获取主机处理器信息

// processor_info.c #include <stdio.h> #include <stdlib.h> #include <mach/mach.h> void print_basic_info(processor_basic_info_t info) { printf("CPU: slot %d%s %s, type %d, subtype %d\n", info->slot_num, (info->is_master) ?

获取本地计算机的网络信息

Windows网络编程第六章探测网络中的在线设备 实验:获取本地计算机的网络信息 实验分析:主要练习对GetAdaptersInfo().GetNetworkParams().GetInterfaceInfo().GetIPAddrTable()等API函数的运用,实验中需要注意的是需要两次调用该函数,第一次返回本机要调查信息的数量,第二次调用显示具体信息. GetInfo.h void pAdapter(); void Network(); void NumberOfInterfaces();