Qt 获取本机网络信息

下面我们就讲解如何获取自己电脑的IP地址以及其他网络信息,我们会涉及到网络模块(QtNetworkModule)中的QHostInfo,QHostAddress,QNetworkInterface和QNetworkAddressEntry等几个类。

pro 文件
在这里插入图片描述

一、使用QHostInfo获取主机名和IP地址

//主机名称
QString  lostHostName=QHostInfo::localHostName();
qDebug()<<"计算机主机名称=="<<lostHostName;
//ip地址
QHostInfo  ipInfo=QHostInfo::fromName(lostHostName);
qDebug()<<"计算机主机IP=="<<ipInfo.addresses();
//便历出所有的地址
foreach(QHostAddress address,ipInfo.addresses())
{
     if(address.protocol() == QAbstractSocket::IPv4Protocol)
        qDebug() << address.toString();
}

在这里插入图片描述
在这里插入图片描述
因为IP地址由QHostAddress 类来管理,所以我们可以使用该类来获取一条IP地址,然后使用该类的***protocol()***函数来判断其是否为IPv4地址。如果是IPv6地址,可以使用QAbstractSocket::IPv6Protocol来判断。

QHostInfo 出了上面获取本机地址还可以根据地址和Id获得上传的信息
QHostInfo::lookupHost()
QHostInfo::lookupId();

二、通过QNetworkInterface类来获取本机的IP地址和网络接口信息
***QNetworkInterface***类提供了程序所运行时的主机的IP地址和网络接口信息的列表。在每一个网络接口信息中都包含了0个或多个IP地址,而每一个IP地址又包含了和它相关的子网掩码和广播地址,它们三者被封装在一个QNetworkAddressEntry对象中。网络接口信息中也提供了硬件地址信息。

//获取所有网络接口的列表
//获取所有网络接口的列表
QList<QNetworkInterface> list = QNetworkInterface::allInterfaces();
foreach(QNetworkInterface interface,list) //遍历每一个网络接口
{
    qDebug() << "设备 Device: "<<interface.name(); //设备名
//硬件地址
qDebug() << "首地址 HardwareAddress: "<<interface.hardwareAddress();

//获取IP地址条目列表,每个条目中包含一个IP地址,
//一个子网掩码和一个广播地址
   QList<QNetworkAddressEntry> entryList= interface.addressEntries();
    foreach(QNetworkAddressEntry entry,entryList)//遍历每个IP地址条目
    {
       qDebug()<<"IP Address: "<<entry.ip().toString(); //IP地址
       qDebug()<<"Netmask: "<<entry.netmask().toString(); //子网掩码
     qDebug()<<"Broadcast: "<<entry.broadcast().toString();//广播地址
    }
}

在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值