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()方法。

 #include "mainwindow.h"
#include <QHostAddress>
#include <QNetworkInterface>
#include <QNetworkAddressEntry>
#include <QDebug> MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
QList<QHostAddress> list = QNetworkInterface::allAddresses(); for (int i = ; i < list.size(); i++)
{
qDebug() << list.at(i);
}
}

成员函数:allInterfaces() [static]

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

 #include "mainwindow.h"
#include <QHostAddress>
#include <QNetworkInterface>
#include <QNetworkAddressEntry>
#include <QDebug> MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
QList<QNetworkInterface> interface = QNetworkInterface::allInterfaces(); for (int i = ; i < interface.size(); i++)
{
qDebug() << interface.at(i);
QNetworkInterface item = interface.at(i);
QList<QNetworkAddressEntry> entryList = item.addressEntries();
for (int j = ; j < entryList.size(); j++)
{
qDebug() << "Item #" << j << entryList.at(j).ip();
}
}
}

成员函数:hardwareAddress() const

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

 #include "mainwindow.h"
#include <QHostAddress>
#include <QNetworkInterface>
#include <QNetworkAddressEntry>
#include <QDebug> MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
QList<QNetworkInterface> interface = QNetworkInterface::allInterfaces(); for (int i = ; i < interface.size(); i++)
{
QNetworkInterface item = interface.at(i);
qDebug() << item.hardwareAddress();
}
}

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

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

  1. Qt-获取主机网络信息之QHostInfo

    Qt中提供了几个用于获取主机网络信息的类,包括QHostInfo.QHostAddress.QNetworkInterface以及QNetworkAddress.在本节中,我将在这里总结QHostIn ...

  2. windows主机网络信息获取程序设计

    掌握windows系统获取网络信息的各种API函数的功能与调用方法,掌握设计程序显示获取到相关网络信息的方法,掌握网络字节数据与主机字节数据之间的转换.掌握这些API函数调用的错误处理方法. 利用本地 ...

  3. Qt 获取usb设备信息 hacking

    /************************************************************************** * Qt 获取usb设备信息 hacking * ...

  4. c/c++ 网络编程 UDP 用if_nameindex和ioctl取得主机网络信息

    网络编程 UDP 用if_nameindex和ioctl取得主机网络信息 getifaddrs函数取得的东西太多了,如果只想取得网卡名字和网卡编号可以用下面的2个函数. 1,if_nameindex ...

  5. c/c++ 网络编程 UDP 主机网络信息取得

    网络编程 UDP 主机网络信息取得 1,if_nametoindex 通过网卡名字取得网卡编号 2,if_indextoname 通过网卡编号取得网卡名字 #include <stdio.h&g ...

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

    gethostname() : 返回本地主机的标准主机名. 原型如下: #include <unistd.h> int gethostname(char *name, size_t len ...

  7. 用ioctl获取无线网络信息 /usr//include/linux/wireless.h

    1.UNIX Network Programming环境搭建 Unix NetWork Programming――环境搭建(解决unp.h等源码编译问题) http://blog.csdn.net/a ...

  8. Qt-获取主机网络信息之QHostAddress

    QHostAddress类提供一个IP地址. 这个类提供一种独立于平台和协议的方式来保存IPv4和IPv6地址. QHostAddress通常与QTcpSocket,QTcpServer,QUdpSo ...

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

    QNetworkAddressEntry类存储了一个网络接口所支持的一个IP地址,同时还有与之相关的子网掩码和广播地址. 每个网络接口可以包含0个或多个IP地址,这些IP地址可以分别关联一个子网掩码和 ...

随机推荐

  1. 将string转换成UTF8在进行请求

    在请求服务器时,如果参数中带有中文字符.就会报参数格式错误,需要将其转换成UTF8 @interface NSString (NSURLUtilities) /* Adds all percent e ...

  2. 【转】使用junit进行单元测试(初级篇)

    转自:http://blog.csdn.net/andycpp/article/details/1327147 我们在编写大型程序的时候,需要写成千上万个方法或函数,这些函数的功能可能很强大,但我们在 ...

  3. C++ 变量初始化规则

    1.定义变量的时候,如果没有初始化,它的值是什么呢? 它的值取决于变量的类型和变量定义的位置. 2.考虑基本类型的变量,定义时没有初始化.如果定义在方法外部,初始化为0,如果定义在方法内部,不被初始化 ...

  4. BZOJ 1151 傲娇的人 排序

    傲娇的人 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/problem/show/1151 Descrip ...

  5. 360开源的类Redis存储系统:Pika

    Pika 是 360 DBA 和基础架构组联合开发的类 Redis 存储系统,完全支持 Redis 协议,用户不需要修改任何代码,就可以将服务迁移至 Pika.有维护 Redis 经验的 DBA 维护 ...

  6. 学习笔记之Shell脚本学习指南 & sed与awk & 正则表达式

    正则表达式_百度百科 http://baike.baidu.com/link?url=ybgDrN2WQQKN64_gu-diCqdeDqL8LQ-jiQ-ftzzPaNUa9CmgBRDNnyx50 ...

  7. How to Analyze Java Thread Dumps--reference

    原文地址:http://architects.dzone.com/articles/how-analyze-java-thread-dumps The Performance Zone is pres ...

  8. 如何查找局域网的外网ip

    方法一:一个简单的方法 用你电脑打开www.ip138.com 就可以看到自己的公网IP地址 方法二:如果一定要从路由器里面看 那就打开路由的配置页面 一般在系统状态里面 会有个WAN口IP 那就是你 ...

  9. debian 开启SSH

    1.修改sshd_config文件,命令为:vi /etc/ssh/sshd_config 2.将#PasswordAuthentication no的注释去掉,并且将NO修改为YES  //我的ka ...

  10. WebSocket原理及与http1.0/1.1 long poll和 ajax轮询的区别【转自知乎】

    一.WebSocket是HTML5出的东西(协议),也就是说HTTP协议没有变化,或者说没关系,但HTTP是不支持持久连接的(长连接,循环连接的不算)首先HTTP有1.1和1.0之说,也就是所谓的ke ...