Qt中提供了丰富的类来获取计算机网络的本地信息,主要用到以下几个类:
- QHostInfo
- QHostAddress
- QNetworkInterface
- QNetworkAddressEntry
先使用命令行来查看一些计算机的配置信息,然后编写程序进行信息对比
QString userName = qgetenv("USERNAME");
qDebug() << "User Name=============" << userName;
void MainWindow::slotGetHostInfo()
{
//QHostInfo类作用,获取主机名,也可以通过主机名来查找IP地址,或者通过IP地十来反向查找主机名
QString strLocalHostName = QHostInfo::localHostName();
QString strLocalDomainName = QHostInfo::localDomainName();
qDebug() << "slotGetHostInfo==strLocalHostName=" << strLocalHostName << " strLocalDomainName=" << strLocalDomainName;
//获取IP地址
QHostInfo info = QHostInfo::fromName(strLocalHostName);
qDebug() << "IP Address======" << info.addresses();
foreach (QHostAddress address, info.addresses()) {
if(address.protocol() == QAbstractSocket::IPv4Protocol)
qDebug() << "IPv4 Address===" << address.toString();
if(address.protocol() == QAbstractSocket::IPv6Protocol)
qDebug() << "IPv6 Address===" << address.toString();
}
foreach(QHostAddress address, QNetworkInterface::allAddresses())
{
qDebug() << "Address====" << address;
}
}
User Name============= "Administrator"
slotGetHostInfo==strLocalHostName= "DESKTOP-7ASYPIN" strLocalDomainName= ""
IP Address====== (QHostAddress("fe80::8df0:2a46:a03c:59a1"), QHostAddress("192.168.1.145"))
IPv6 Address=== "fe80::8df0:2a46:a03c:59a1"
IPv4 Address=== "192.168.1.145"
Address==== QHostAddress("fe80::8df0:2a46:a03c:59a1%wireless_32711")
Address==== QHostAddress("192.168.1.145")
Address==== QHostAddress("::1")
Address==== QHostAddress("127.0.0.1")
3.获取设备名、MAC地址、子网掩码、广播地址等
void MainWindow::slotGetNetworkInterfaceInfo()
{
//获取所有网络接口的列表
foreach(QNetworkInterface netInterface, QNetworkInterface::allInterfaces())
{
//设备名
qDebug() << "Device Name = " << netInterface.name();
//MAC地址
qDebug() << "MAC Address = " << netInterface.hardwareAddress();
QList<QNetworkAddressEntry> entryList = netInterface.addressEntries();
//遍历每一个IP地址(包含一个IP址,一个子网掩码和一个广播地址)
foreach(QNetworkAddressEntry entry, entryList)
{
//IP地址
qDebug() << "IP Address = " << entry.ip().toString();
//子网掩码
qDebug() << "Netmask======" << entry.netmask().toString();
//广播地址
qDebug() << "Broadcast====" << entry.broadcast().toString();
qDebug() << "----------------------------------" << endl;
}
qDebug() << "=====================================" << endl << endl;
}
}
Device Name = "wireless_32711"
MAC Address = "0A:1F:71:28:65:7D"
IP Address = "fe80::2850:f27a:d5a6:168a%wireless_32711"
Netmask====== "ffff:ffff:ffff:ffff::"
Broadcast==== ""
----------------------------------
IP Address = "169.254.21.138"
Netmask====== "255.255.0.0"
Broadcast==== "169.254.255.255"
----------------------------------
=====================================
Device Name = "wireless_32610"
MAC Address = "08:1F:71:28:65:7D"
IP Address = "fe80::49b1:865:1842:474a%wireless_32610"
Netmask====== "ffff:ffff:ffff:ffff::"
Broadcast==== ""
----------------------------------
IP Address = "169.254.68.79"
Netmask====== "255.255.0.0"
Broadcast==== "169.254.255.255"
----------------------------------
=====================================
Device Name = "wireless_32712"
MAC Address = "08:1F:71:28:65:7D"
IP Address = "fe80::8df0:2a46:4d0e:54a2%wireless_32712"
Netmask====== "ffff:ffff:ffff:ffff::"
Broadcast==== ""
----------------------------------
IP Address = "192.168.1.145"
Netmask====== "255.255.255.0"
Broadcast==== "192.168.1.255"
----------------------------------
=====================================
Device Name = "loopback_0"
MAC Address = ""
IP Address = "::1"
Netmask====== "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"
Broadcast==== ""
----------------------------------
IP Address = "127.0.0.1"
Netmask====== "255.0.0.0"
Broadcast==== "127.255.255.255"
----------------------------------
=====================================