Qt-网络与通信-获取本机网络信息

简介: Qt-网络与通信-获取本机网络信息

在网络应用中,经常需要获取本机主机名和IP地址和硬件地址等信息。运用QHostInfo、QNetworkInterface、QNetworkAddressEntry可以获得本机的网络信息。

 

image.png

这里需要注意的,在Qt5.80 VS的版本中,有的字符“:”中文版本的,会导致编译错误。

第一步,需要再pro文件中加入 QT+= network

 

.h文件

#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QLabel>
#include <QPushButton>
#include <QLineEdit>
#include <QGridLayout>
#include <QMessageBox>
#include <QHostInfo>
#include <QNetworkInterface>
class Widget : public QWidget
{
    Q_OBJECT
public:
    Widget(QWidget *parent = 0);
    ~Widget();
    void getHostInformation();
public slots:
    void slotDetail();
private:
    QLabel *hostLabel;
    QLineEdit *LineEditLocalHostName;
    QLabel *ipLabel;
    QLineEdit *LineEditAddress;
    QPushButton *detailBtn;
    QGridLayout *mainLayout;
};
#endif // WIDGET_H

.cpp文件

#include "widget.h"
#include <QDebug>
Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    hostLabel = new QLabel(tr("主机名:"));
    LineEditLocalHostName = new QLineEdit;
    ipLabel = new QLabel(tr("IP 地址:"));
    LineEditAddress = new QLineEdit;
    detailBtn = new QPushButton(tr("详细"));
    mainLayout = new QGridLayout(this);
    mainLayout->addWidget(hostLabel,0,0);
    mainLayout->addWidget(LineEditLocalHostName,0,1);
    mainLayout->addWidget(ipLabel,1,0);
    mainLayout->addWidget(LineEditAddress,1,1);
    mainLayout->addWidget(detailBtn,2,0,1,2);
    getHostInformation();
    connect(detailBtn,SIGNAL(clicked()),this,SLOT(slotDetail()));
}
Widget::~Widget()
{
}
void Widget::getHostInformation()
{
    QString localHostName = QHostInfo::localHostName();     
    LineEditLocalHostName->setText(localHostName);
    QHostInfo hostInfo = QHostInfo::fromName(localHostName);  
    QList<QHostAddress> listAddress = hostInfo.addresses();
    qDebug()<<listAddress;
    if(!listAddress.isEmpty())                  
    {
        LineEditAddress->setText(listAddress.at(4).toString());
    }
}
void Widget::slotDetail()
{
    QString detail="";
    QList<QNetworkInterface> list=QNetworkInterface::allInterfaces();
    //(a)
    for(int i=0;i<list.count();i++)
    {
        QNetworkInterface interface=list.at(i);
        detail=detail+tr("设备:")+interface.name()+"\n";
        //(b)
        detail=detail+tr("硬件地址:")+interface.hardwareAddress()+"\n";
        //(c)
        QList<QNetworkAddressEntry> entryList=interface.addressEntries();
        //(d)
        for(int j=1;j<entryList.count();j++)
        {
            QNetworkAddressEntry entry=entryList.at(j);
            detail=detail+"\t"+tr("IP 地址:")+entry.ip().toString()+"\n";
            detail=detail+"\t"+tr("子网掩码:")+entry.netmask().toString() +"\n";
            detail=detail+"\t"+tr("广播地址:")+entry.broadcast().toString() +"\n";
        }
    }
    QMessageBox::information(this,tr("Detail"),detail);
}

工程地址:https://gitee.com/DreamLife-Technology_DreamLife/NetworkInformation

目录
相关文章
|
17天前
|
NoSQL 网络协议 Linux
Redis的实现一:c、c++的网络通信编程技术,先实现server和client的通信
本文介绍了使用C/C++进行网络通信编程的基础知识,包括创建socket、设置套接字选项、绑定地址、监听连接以及循环接受和处理客户端请求的基本步骤。
41 6
|
21天前
|
安全 物联网 物联网安全
量子通信网络:安全信息交换的新平台
【10月更文挑战第6天】量子通信网络作为一种全新的安全信息交换平台,正逐步展现出其独特的优势和巨大的潜力。通过深入研究和不断探索,我们有理由相信,量子通信网络将成为未来信息安全领域的重要支柱,为构建更加安全、高效、可靠的信息社会贡献力量。让我们共同期待量子通信网络在未来的广泛应用和美好前景!
|
1月前
|
安全 量子技术 数据安全/隐私保护
量子通信:构建安全通信网络的未来
【9月更文挑战第21天】量子通信作为信息时代的一次伟大飞跃,正引领我们迈向一个全新的安全通信纪元。其独特的绝对安全性、高效率和大容量特点,使得量子通信在构建未来安全通信网络中具有不可替代的作用。随着技术的不断发展和应用的不断拓展,我们有理由期待量子通信将在未来发挥更加重要的作用,为人类社会的信息安全保驾护航。
81 13
|
11天前
|
机器学习/深度学习 人工智能 算法
|
4天前
|
网络协议 安全 数据安全/隐私保护
网络协议:互联网通信的基石
【10月更文挑战第12天】
19 1
|
5天前
|
网络协议 Linux 应用服务中间件
Socket通信之网络协议基本原理
【10月更文挑战第10天】网络协议定义了机器间通信的标准格式,确保信息准确无损地传输。主要分为两种模型:OSI七层模型与TCP/IP模型。
|
11天前
|
安全 物联网 5G
无线网络技术:5G之后的通信革命
【10月更文挑战第16天】本文探讨了5G之后无线网络技术的发展趋势,涵盖5G-A、Wi-Fi 7及未来通信技术展望。5G-A提升了网络速度、时延和连接数,Wi-Fi 7则在性能和可靠性上大幅跃升,未来通信技术将朝向更高速度、更低延迟、更广覆盖方向发展。
|
14天前
|
监控 Kubernetes 测试技术
掌握Docker网络模式:构建高效容器通信
【10月更文挑战第3天】本文深入探讨了Docker的网络模式,包括它们的工作原理、使用场景以及如何配置和优化容器间的通信。希望能够帮助开发者在项目中有效地应用Docker网络模式,构建高效的容器化应用。
|
19天前
|
SQL 安全 算法
网络安全与信息安全:构建数字世界的防线在数字化浪潮席卷全球的今天,网络安全与信息安全已成为维系社会秩序、保障个人隐私与企业机密的重要基石。本文旨在深入探讨网络安全漏洞的本质、加密技术的前沿进展以及提升安全意识的有效策略,为读者揭示数字时代下信息保护的核心要义。
本文聚焦网络安全与信息安全领域,详细剖析了网络安全漏洞的形成机理、常见类型及其潜在危害,强调了及时检测与修复的重要性。同时,文章系统介绍了对称加密、非对称加密及哈希算法等主流加密技术的原理、应用场景及优缺点,展现了加密技术在保障数据安全中的核心地位。此外,针对社会普遍存在的安全意识薄弱问题,提出了一系列切实可行的提升措施,如定期安全培训、强化密码管理、警惕钓鱼攻击等,旨在引导公众树立全面的网络安全观,共同构筑数字世界的安全防线。
|
20天前
|
运维 物联网 5G
5G网络的多接入技术融合:构建无缝通信未来
5G网络的多接入技术融合:构建无缝通信未来
78 4