论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
软件与程序人生
›
后端开发
›
Java
›
C++ Qt开发:QNetworkInterface网络接口组件
C++ Qt开发:QNetworkInterface网络接口组件
守听
金牌会员
|
2024-5-13 12:29:05
|
显示全部楼层
|
阅读模式
楼主
主题
886
|
帖子
886
|
积分
2658
Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用步调,在Qt中我们可以通过拖拽的方式将差别组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍如何运用QNetworkInterface组件实现查询详细的网络接口参数。
在Qt网络编程中,QNetworkInterface是一个强大的类,提供了获取本地网络接口信息的能力。通过QNetworkInterface,可以轻松地获取有关网络接口的信息,包括接口的名称、硬件地点、IP地点和子网掩码等。这个类对于需要获取本地网络环境信息的应用步调特别有用,例如网络配置工具、网络监控步调等。QNetworkInterface通过提供一致而易于利用的接口,使得网络编程中的任务更加简便和可靠。
以下是QNetworkInterface类的一些常用函数的表明:
函数描述static QList allInterfaces()返回系统中所有可用的网络接口列表。static QNetworkInterface interfaceFromName(const QString &name)根据给定名称返回对应的网络接口。static QList allAddresses()返回系统中所有网络接口的IP地点列表。QString name() const返回网络接口的名称。QNetworkInterface::InterfaceType type() const返回网络接口的范例。bool isValid() const判断网络接口是否有用。QNetworkAddressEntry addressEntryAt(int index) const返回索引位置的网络接口地点。QList addressEntries() const返回网络接口的地点列表。QNetworkAddressEntry addressEntry() const返回首选网络接口地点,假如没有地点则返回空的QNetworkAddressEntry对象。QNetworkInterface::HardwareAddress macAddress() const返回网络接口的硬件地点(MAC地点)。bool isLoopBack() const判断网络接口是否是回环接口。bool isPointToPoint() const判断网络接口是否是点对点连接。bool supportsMulticast() const判断网络接口是否支持多播。bool operator==(const QNetworkInterface &other) const判断两个网络接口是否相等。bool operator!=(const QNetworkInterface &other) const判断两个网络接口是否不相等。QList allInterfaces(QNetworkInterface::InterfaceType type)返回指定范例的所有网络接口列表。QNetworkInterface类提供了丰富的功能,用于获取和处理系统中的网络接口信息。通过这些函数,可以轻松地检索有关网络接口的各种详细信息,为网络编程提供了便捷的工具。
网卡的查询非常容易实现,只需要调用通用接口QNetworkInterface::allInterfaces()即可,该函数可以直接返回指定范例的所有网络接口列表。
在解析IP地点时还需要利用QNetworkAddressEntry类,QNetworkAddressEntry是用于表现网络接口地点信息的类。它包含了IP地点、子网掩码、广播地点以及前缀长度等关键信息,为处理网络配置和操纵提供了便捷的工具。通过QNetworkAddressEntry可以轻松地获取和设置网络接口的各种地点属性,用于网络编程中的接口配置和信息查询。
以下是QNetworkAddressEntry类的一些常用函数和描述:
函数描述QNetworkAddressEntry()默认构造函数,创建一个空的QNetworkAddressEntry对象。QNetworkAddressEntry(const QNetworkAddressEntry &other)拷贝构造函数,根据给定的other对象创建一个新的对象。QNetworkAddressEntry &operator=(const QNetworkAddressEntry &other)赋值运算符,将other对象的值赋给当前对象。void setIp(const QHostAddress &address)设置IP地点。QHostAddress ip() const返回IP地点。void setNetmask(const QHostAddress &netmask)设置子网掩码。QHostAddress netmask() const返回子网掩码。void setBroadcast(const QHostAddress &broadcast)设置广播地点。QHostAddress broadcast() const返回广播地点。void setPrefixLength(int length)设置前缀长度。int prefixLength() const返回前缀长度。void clear()清空QNetworkAddressEntry对象,重置为初始状态。通过利用aInterface.addressEntries()我们可直接读入IP地点列表,并将其放入到QNetworkAddressEntry内生存,通过*.count()得到网卡总数目,并调用at()得到我们所需要的地点,最后就能够通过aEntry.ip().*的方式遍历出所有的地点信息,代码如下所示;
void MainWindow::on_pushButton_clicked()
{
QList<QNetworkInterface> list=QNetworkInterface::allInterfaces();
for(int i=0;i<list.count();i++)
{
QNetworkInterface aInterface=list.at(i);
if (!aInterface.isValid())
continue;
ui->plainTextEdit->appendPlainText("设备名称:"+aInterface.humanReadableName());
ui->plainTextEdit->appendPlainText("硬件地址:"+aInterface.hardwareAddress());
QList<QNetworkAddressEntry> entryList=aInterface.addressEntries();
for(int j=0;j<entryList.count();j++)
{
QNetworkAddressEntry aEntry=entryList.at(j);
ui->plainTextEdit->appendPlainText("IP 地址:"+aEntry.ip().toString());
ui->plainTextEdit->appendPlainText("子网掩码:"+aEntry.netmask().toString());
ui->plainTextEdit->appendPlainText("广播地址:"+aEntry.broadcast().toString());
}
ui->plainTextEdit->appendPlainText(" ------------------------------------------- ");
ui->plainTextEdit->appendPlainText("\n");
}
}
复制代码
运行后点击查询网卡信息,可得到完整的本机网卡,如下图;
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
守听
金牌会员
这个人很懒什么都没写!
楼主热帖
【网络编程】从零开始搭建一个开源博客 ...
报错building for iOS Simulator, but ...
Vulnhub靶机-Al-Web-1
Python学习:import的正确用法
【CSDN云VS腾讯云】要不然怎么说CSDN开 ...
面试官:BIO、NIO、AIO是什么,他们有 ...
全网最新的nacos 2.1.0集群多节点部署 ...
TCP协议
UWP/WinUI3 Win2D PixelShaderEffec ...
如何成为一名开发人员——第 3 部分: ...
标签云
存储
服务器
快速回复
返回顶部
返回列表