Qt获取本机网络信息

Qt中提供了丰富的类来获取计算机网络的本地信息,主要用到以下几个类:

  • QHostInfo
  • QHostAddress
  • QNetworkInterface
  • QNetworkAddressEntry

先使用命令行来查看一些计算机的配置信息,然后编写程序进行信息对比

1.首先按住键盘上的“开始键+R键”,然后在弹出的对话框中输入“CMD”,回车
另外,还可以依次点击 开始>所有程序>附件>命令提示符
2.接下来在弹出的命令提示符窗口中输入“ipconfig -all”并按键盘上的回车,(注:ipconfig 命令为查看IP配置信息,参数“all”表示查看所有网卡的全部配置信息)
    如下图所示:

    那么,在Qt中如何获取主机名、IP、端口、MAC等信息?

 

1.获取登录用户
 
QString userName = qgetenv("USERNAME");
qDebug() << "User Name=============" << userName;

 

 
运行输出:
 
User Name============= "Administrator"
 
2.获取主机名、IP地址
 
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"
----------------------------------

=====================================

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值