QHostInfo 类:查询与特定主机名相关联的主机的IP地址,或者与一个IP地址相关联的主机名。
QHostAddress 类:提供一个IP地址,可提供独立于平台和协议的方式来保存 IPv4和IPv6 地址。
QNetworkInterface 类:负责提供主机IP地址和网络接口的列表,表示了当前程序正在运行时与主机绑定的一个网络接口。
QNetworkAddressEntry 类:存储了一个网络接口所支持的一个IP地址,同时还有与之相关的子网掩码和广播地址。
#include <QCoreApplication> #include <QHostInfo> #include <QNetworkInterface> #include <QString> void getHostInformation(); int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); getHostInformation(); return a.exec(); } void getHostInformation() { /***********************************************************/ //QHostInfo 提供一系列有关网络信息的静态函数,可获取主机名、IP地址 QString localHostName = QHostInfo::localHostName(); // 获取本机主机名 qDebug() << "主机名: " << localHostName; qDebug() << endl; /***********************************************************/ //根据主机名获取相关主机信息,包括IP地址。 QHostInfo hostInfo = QHostInfo::fromName(localHostName); QList<QHostAddress> addrList = hostInfo.addresses(); // 获取本主机上的IP地址列表 qDebug() << "本主机上的IP地址列表,总计: " << addrList.count() ; /***********************************************************/ foreach (QHostAddress var, addrList) { qDebug() << var.toString(); //本机IP地址列表 } qDebug() << endl; /***********************************************************/ if(!addrList.isEmpty()) //获得的主机IP地址列表可能为空。 { // 在不为空情况下使用第一个IP地址,可能IPv6,也可能IPv4 qDebug() << "first ip addr:" << addrList.first().toString(); } qDebug() << endl; /***********************************************************/ QString ipAddress; //QList<QHostAddress> addrList = QNetworkInterface::allAddresses(); //仅仅获取IP地址列表 for (int i = 0; i < addrList.size(); ++i) { if (addrList.at(i) != QHostAddress::LocalHost && addrList.at(i).toIPv4Address()) { //是IPv4地址且非 QHostAddress::LocalHost ipAddress = addrList.at(i).toString(); qDebug() << "first ipv4 addr:" << ipAddress;// 在不为空情况下使用第一个IPv4地址 break; } } qDebug() << endl; /***********************************************************/ // 获取本机的网络接口列表 QList<QNetworkInterface> ifaceList = QNetworkInterface::allInterfaces(); for (int i = 0; i < ifaceList.count(); i++){ QNetworkInterface var = ifaceList.at(i); qDebug() << QString("########## 设备%1 ############").arg(i); qDebug() << QString("接口名称:") << var.humanReadableName(); qDebug() << QString("设备名称:") << var.name(); qDebug() << QString("硬件地址:") << var.hardwareAddress(); /***********************************************************/ // 读取一个IP地址的关联信息列表 QList<QNetworkAddressEntry> entryList = var.addressEntries(); //qDebug() << "IP地址的关联信息列表: "; //foreach(QNetworkAddressEntry entry, entryList){ //qDebug() << "IP: " << entry.ip().toString(); //qDebug() << "子网掩码:" << entry.netmask().toString(); //qDebug() << "广播地址:" << entry.broadcast().toString(); //} /***********************************************************/ // 读取一个IPv4地址的关联信息列表 //qDebug() << "IPv4地址的关联信息列表: "; foreach(QNetworkAddressEntry ipv4entry, entryList){ if (ipv4entry.ip().toIPv4Address()) { qDebug() << "IP: " << ipv4entry.ip().toString(); qDebug() << "子网掩码:" << ipv4entry.netmask().toString(); qDebug() << "广播地址:" << ipv4entry.broadcast().toString(); } } } /***********************************************************/ }
版权声明:
此文为本站源创文章[或由本站编辑从网络整理改编],
转载请备注出处:
[CSDN]
https://blog.csdn.net/hebbely/article/details/78246354
[若此文确切存在侵权,请联系本站管理员进行删除!]
--THE END--