Qt之QNetworkAddressEntry

简述

QNetworkAddressEntry类由网络接口支持,存储了一个IP地址,子网掩码和广播地址。

每个网络接口可以包含零个或多个IP地址,进而可以关联到一个子网掩码和/或一个广播地址(取决于操作系统的支持)。

这个类代表一个这样的组。

  • 简述
  • 常用接口
  • 使用
  • 更多参考

常用接口

QHostAddress broadcast() const

返回IPv4地址和子网掩码相关联的广播地址。

对于IPv6地址来说,返回的总是空,因为广播的概念已被抛弃,为了系统支持多播。

QHostAddress ip() const

返回一个网络接口中存在的IPv4或IPv6地址。

QHostAddress netmask() const

返回与IP地址相关联的子网掩码。子网掩码是一个IP地址的形式表示,如255.255.0.0。

对于IPv6地址,前缀长度被转换成一个地址,其中设置为1的位数等于前缀长度。前缀长度为64位(最常见的值),子网掩码将被表示为一个地址为FFFF:FFFF:FFFF:FFFF::的QHostAddress。

int prefixLength() const

返回此IP地址的前缀长度。前缀长度和子网掩码中设置为1的位数相匹配。IPv4地址的值在0 - 32之间。IPv6地址的值在0 - 128之间,是表示数据的首选。

如果前缀长度不能确定,则返回0(即:netmask()返回一个空的QHostAddress())。

例如:

255.255.240.0 转换为二进制:11111111 11111111 11110000 00000000,那么前缀长度就是8*2 + 4 = 20(1的个数)。

ffff:ffff:ffff:ffff:: 转换为二进制:1111111111111111 1111111111111111 1111111111111111 1111111111111111,那么前缀长度就是16*4 = 64(1的个数)。

使用

QNetworkInterface类中提供了一个便利的静态函数allInterfaces(),用于返回所有的网络接口。

QList<QNetworkInterface> list = QNetworkInterface::allInterfaces();
foreach (QNetworkInterface netInterface, list) {
    QList<QNetworkAddressEntry> entryList = netInterface.addressEntries();
    foreach(QNetworkAddressEntry entry, entryList) {  // 遍历每一个IP地址
        qDebug() << "********************";
        qDebug() << "IP Address:" << entry.ip().toString();  // IP地址
        qDebug() << "Netmask:" << entry.netmask().toString();  // 子网掩码
        qDebug() << "Broadcast:" << entry.broadcast().toString();  // 广播地址
        qDebug() << "Prefix Length:" << entry.prefixLength();  // 前缀长度
    }
}

通过遍历每一个网络接口QNetworkInterface,根据其addressEntries()函数,我们可以很容易的获取到所有的QNetworkAddressEntry,然后通过ip()、netmask()、broadcast()函数获取对应的IP地址、子网掩码以及广播地址。

输出如下:



IP Address: “fe80::550c:ab19:fb48:1c9%15”

Netmask: “ffff:ffff:ffff:ffff::”

Broadcast: “”

Prefix Length: 64



IP Address: “169.254.1.201”

Netmask: “”

Broadcast: “”

Prefix Length: -1



IP Address: “fe80::d086:8566:6065:8954%11”

Netmask: “ffff:ffff:ffff:ffff::”

Broadcast: “”

Prefix Length: 64



IP Address: “172.18.4.165”

Netmask: “255.255.240.0”

Broadcast: “172.18.15.255”

Prefix Length: 20



IP Address: “fe80::f864:a962:7219:f98e%16”

Netmask: “ffff:ffff:ffff:ffff::”

Broadcast: “”

Prefix Length: 64



IP Address: “192.168.17.1”

Netmask: “255.255.255.0”

Broadcast: “192.168.17.255”

Prefix Length: 24



IP Address: “fe80::8169:691f:148e:d3cb%17”

Netmask: “ffff:ffff:ffff:ffff::”

Broadcast: “”

Prefix Length: 64



IP Address: “192.168.178.1”

Netmask: “255.255.255.0”

Broadcast: “192.168.178.255”

Prefix Length: 24



IP Address: “fe80::5996:27a3:83b5:2ae7%18”

Netmask: “ffff:ffff:ffff:ffff::”

Broadcast: “”

Prefix Length: 64



IP Address: “192.168.56.1”

Netmask: “255.255.255.0”

Broadcast: “192.168.56.255”

Prefix Length: 24



IP Address: “::1”

Netmask: “ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff”

Broadcast: “”

Prefix Length: 128



IP Address: “127.0.0.1”

Netmask: “”

Broadcast: “”

Prefix Length: -1

更多参考

时间: 2024-10-09 04:21:06

Qt之QNetworkAddressEntry的相关文章

将vim作为QT开发的IDE

转载请注明链接与作者huihui1988 用了一段时间的vim,喜欢上了这种简洁高效的编辑器.恰逢正在学习QT中,于是将vim变成了开发QT的工具.以下是具体配置. 一.语法高亮支持: 1.打开VIMDIR/vim72/syntax/cpp.vim,加入 syn keyword cppStatement SLOT,SIGNAL syn keyword cppAccess slots,signals 2.增加QT的类型名: syn keyword cType ActiveQt Q3Accel Q3

Qt之获取本机网络信息(超详细)

经常使用命令行来查看一些计算机的配置信息. 1.首先按住键盘上的“开始键+R键”,然后在弹出的对话框中输入“CMD”,回车 另外,还可以依次点击 开始>所有程序>附件>命令提示符 2.接下来在弹出的命令提示符窗口中输入“ipconfig /all”并按键盘上的回车,(注:ipconfig 命令为查看IP配置信息,参数“all”表示查看所有网卡的全部配置信息) 如下图所示: 那么,在Qt中如何获取主机名.IP.端口.MAC等信息? 主要使用到的类有: QHostInfo QHostAddr

Qt之获取本机网络信息(MAC, IP等等,很全)

经常使用命令行来查看一些计算机的配置信息. 1.首先按住键盘上的“开始键+R键”,然后在弹出的对话框中输入“CMD”,回车 另外,还可以依次点击 开始>所有程序>附件>命令提示符 2.接下来在弹出的命令提示符窗口中输入“ipconfig /all”并按键盘上的回车,(注:ipconfig 命令为查看IP配置信息,参数“all”表示查看所有网卡的全部配置信息) 如下图所示: 那么,在Qt中如何获取主机名.IP.端口.MAC等信息? 主要使用到的类有: QHostInfo QHostAddr

qt获得本地IP的方法,qt中域名解析的方法

本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明. 环境:Ubuntu10.04 + Qt4.7.0 Linux获得本地IP的方法,我尝试了两种 1.用QHostInfo类解析 QHostInfo类可以解析域名,理论上也可以解析本地IP,可是经过尝试,我发现解析出来的IP是127.0.0.1是本地回环地址,不符合我的需求. 代码: [cpp] view plain copy //获取本地IP QHostInfo info=QHostInfo::from

Qt网络获取本机网络信息

下面我们就讲解如何获取自己电脑的IP地址以及其他网络信息.这一节中,我们会涉及到网络模块(QtNetwork Module)中的QHostInfo ,QHostAddress ,QNetworkInterface和QNetworkAddressEntry等几个类.下面是详细内容. 我们新建Qt4 Gui Application 工程,工程名为myIP ,选中QtNetwork模块,Base class选择QWidget. 我们在widget.h文件中包含头文件:#include <QtNetwo

Qt之网络编程

简述 Qt Network模块提供的类允许编写 TCP/IP clients 和 servers. 其中包含一些低级别的类,例如:QTcpSocket.QTcpServer 和 QUdpSocket,表示低级的网络概念:一些高级别的类,例如:QNetworkRequest.QNetworkReply 和 QNetworkAccessManager,使用常见的协议执行网络操作:它还提供其他的类,例如:QNetworkConfiguration.QNetworkConfigurationManage

5.关于QT中的网络编程,QTcpSocket,QUdpSocket

?? 1 新建一个项目:TCPServer.pro A  改动TCPServer.pro,注意:假设是想使用网络库.须要加上network SOURCES += \ TcpServer.cpp \ TcpClient.cpp HEADERS += \ TcpServer.h \ TcpClient.h QT += gui widgets network CONFIG += C++11 B 新建例如以下文件,由于要用到网络库,所以加上network C 编写IP选择下拉选,头文件ChooseInt

LINUX下QT与C语言通过网卡名获取网卡IP与MAC

1.QT下 QString RuntimeConfig::ipAddress(QString network) { QList<QNetworkAddressEntry> list; QString localIPaddress; QNetworkInterface interface = QNetworkInterface::interfaceFromName(network); list = interface.addressEntries(); if (!list.isEmpty())

Qt学习之路:获取本机网络信息

用Qt5实现的简单程序,获取本机网络信息. 建立工程后,在.pro里加入: QT += network 用Qt设计器创建界面: 在widget.h中声明getHostInformation类: public: int getHostInformation(); 声明槽函数: public slots : void slotDetail(); 并包含头文件: #include <QHostInfo> #include <QNetworkInterface> 在widget.cpp中实