zl程序教程

您现在的位置是:首页 >  工具

当前栏目

Qt之QNetworkAddressEntry

Qt
2023-09-11 14:19:13 时间

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

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


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



返回此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: “fe80::d086:8566:6065:8954%11”
Netmask: “ffff:ffff:ffff:ffff::”
Broadcast: “”
Prefix Length: 64


IP Address: “fe80::f864:a962:7219:f98e%16”
Netmask: “ffff:ffff:ffff:ffff::”
Broadcast: “”
Prefix Length: 64


IP Address: “fe80::8169:691f:148e:d3cb%17”
Netmask: “ffff:ffff:ffff:ffff::”
Broadcast: “”
Prefix Length: 64


IP Address: “fe80::5996:27a3:83b5:2ae7%18”
Netmask: “ffff:ffff:ffff:ffff::”
Broadcast: “”
Prefix Length: 64


Qt 的主事件循环(QCoreApplication::exec())从事件队列中获取本地窗口系统事件,将它们转化为 QEvents,然后将转换后的事件发送给 QObjects。 一般来说,事件来自底层窗口系统(spontaneous() 返回 true),但也可以使用 QCoreApplication:
滚动区域用于显示一个画面中的子部件的内容。如果部件超过画面的大小,视图可以提供滚动条,这样就都可以看到部件的整个区域。
QDateTimeEdit允许用户编辑日期,通过使用键盘或箭头键来增加和减少日期和时间值。箭头键可以在QDateTimeEdit内进行部分移动,日期和时间的格式按照setDisplayFormat()设置的显示。
虽然QLocalSocket是一个事件循环使用而设计,它也可以不被如此使用。这种情况下,必须使用 waitF
现代操作系统通常在桌面上提供一个特殊的区域,称为系统托盘或通知区域,长时间运行的应用程序可以显示图标和短消息。
QRadioButton是一个可以切换选中(checked)或未选中(unchecked)状态的选项按钮。单选框通常呈现给用户一个“多选一”的选择。也就是说,在一组单选框中,一次只能选中一个单选框。