一、只获取主机名称和IP地址
#include "ServerNetwork.h"
#include <QHostInfo>
#include <QDebug>
#include <QList>
#include <QNetworkAddressEntry>
#include <QNetworkInterface>
#pragma execution_character_set("utf-8")
ServerNetwork::ServerNetwork(QWidget *parent)
: QWidget(parent)
{
On_BtnGetHostInfo();
}
void ServerNetwork::On_BtnGetHostInfo()
{
QString hostName = QHostInfo::localHostName();
qDebug() << "主机名称:" << hostName;
QList <QHostAddress> list = QNetworkInterface::allAddresses();
foreach(QHostAddress address, list)
{
if (address.protocol() == QAbstractSocket::IPv4Protocol)
{
qDebug() << "IP地址:" << address.toString(); //我们使用IPv4地址
return;
}
}
}
//头文件
#pragma once
#include <QtWidgets/QWidget>
#include "ui_ServerNetwork.h"
class ServerNetwork : public QWidget
{
Q_OBJECT
public:
ServerNetwork(QWidget *parent = Q_NULLPTR);
private:
void On_BtnGetHostInfo();
};
二、获取各种网络接口和设备名
void ServerNetwork::On_BtnGetHostInfo()
{
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() << tr("-------------------------------------------------------");
qDebug() << "IP Address:" << entry.ip().toString(); //IP地址
qDebug() << "Netmask:" << entry.netmask().toString(); //子网掩码
qDebug() << "Broadcast:" << entry.broadcast().toString(); //广播地址
qDebug() << tr("-------------------------------------------------------");
}
qDebug() << endl;
}
}