网络模块需要在.pro文件中添加 QT += network
QHostInfo 利用操作系统提供的查询机制来查询与特定主机名相关联的主机的 IP 地址
头文件:#include<QHostInfo>
//获取本机的名称
QString loaclHostName = QHostInfo::localHostName();
qDebug()<<"本机名称为:"<<loaclHostName;
QHostAddress类提供一个IP地址。 这个类提供一种独立于平台和协议的方式来保存IPv4和IPv6地址。
头文件:#include<QHostAddress>
//通过本机名获取本机对象
QHostInfo info = QHostInfo::fromName(loaclHostName);
//获取所有的IP地址
QList<QHostAddress> allAddresslist = info.addresses();
foreach(QHostAddress address, allAddresslist)
{
//协议为IPv4时
if(address.protocol() == QAbstractSocket::IPv4Protocol)
{
qDebug()<<"IP地址为:"<<address.toString();
}
}
QNetworkInterface类提供了程序所运行时的主机的IP地址和网络接口信息的列表。在每一个网络接口信息中都包含了0个或多个IP地址,而每一个IP地址又包含了和它相关的子网掩码和广播地址,它们三者被封装在一个QNetworkAddressEntry对象中。
头文件:#include<QNetworkInterface>
QList<QNetworkInterface> list = QNetworkInterface::allInterfaces();
//遍历每一个网络接口
foreach(QNetworkInterface interface,list)
{
qDebug() << "设备名: "<<interface.name();
qDebug() << "硬件地址: "<<interface.hardwareAddress();
//获取IP地址条目列表,每个条目中包含一个IP地址,一个子网掩码和一个广播地址
QList<QNetworkAddressEntry> entryList = interface.addressEntries();
//遍历每一个IP地址条目
foreach(QNetworkAddressEntry entry,entryList)
{
qDebug()<<"IP地址: "<<entry.ip().toString();
qDebug()<<"子网掩码: "<<entry.netmask().toString();
qDebug()<<"广播地址: "<<entry.broadcast().toString();
}
}
参考博客:https://blog.csdn.net/flowerspring/article/details/51001597