文件配置

.pro

QT       += network

头文件

#include <QHostAddress>
#include <QHostInfo>
#include <QNetworkInterface>
#include <QProcess>

获取主机名

    //获取主机名
    QString localHost = QHostInfo::localHostName();

获取用户名

QString getUserName()
{
    QStringList envVariables;
    envVariables << "USERNAME.*" << "USER.*" << "USERDOMAIN.*"
                 << "HOSTNAME.*" << "DOMAINNAME.*";
    QStringList environment = QProcess::systemEnvironment();
    foreach (QString string, envVariables) {
        int index = environment.indexOf(QRegExp(string));
        if (index != -1) {
            QStringList stringList = environment.at(index).split('=');
            if (stringList.size() == 2) {
                return stringList.at(1);
            }
        }
    }
    return "unknown";
}

获取本机IP

QString getIP(QString localHost)
{
    QString ipAddr;
#if 0
    QList<QHostAddress> AddressList = QNetworkInterface::allAddresses();
    foreach(QHostAddress address, AddressList){
        if(address.protocol() == QAbstractSocket::IPv4Protocol &&
                address != QHostAddress::Null &&
                address != QHostAddress::LocalHost){
            if (address.toString().contains("127.0.")){
                continue;
            }
            ipAddr = address.toString();
            break;
        }
    }
#else
    QHostInfo info = QHostInfo::fromName(localHost);
    info.addresses();//QHostInfo的address函数获取本机ip地址
    //如果存在多条ip地址ipv4和ipv6:
    foreach(QHostAddress address,info.addresses())
    {
        if(address.protocol()==QAbstractSocket::IPv4Protocol){//只取ipv4协议的地址
            qDebug()<<address.toString();
            ipAddr = address.toString();
        }
    }
#endif
    return ipAddr;
}

获取计算机详细信息

//获取计算机详细信息
void slotDetail()  
{  
    QString detail="";  
    QList<QNetworkInterface> list=QNetworkInterface::allInterfaces();  
    for(int i=0;i<list.count();i++)  
    {  
        QNetworkInterface interface=list.at(i);  
        detail=detail+tr("设备:")+interface.name()+"\n";  
        detail=detail+tr("硬件地址:")+interface.hardwareAddress()+"\n";  
        QList<QNetworkAddressEntry> entryList=interface.addressEntries();  
        for(int j=0;j<entryList.count();j++)  
        {  
            QNetworkAddressEntry entry=entryList.at(j);  
            detail=detail+"\t"+tr("IP 地址:")+entry.ip().toString()+"\n";  
            detail=detail+"\t"+tr("子网掩码:")+entry.netmask().toString()+"\n";  
            detail=detail+"\t"+tr("广播地址:")+entry.broadcast().toString()+"\n";  
        }  
    }  
    QMessageBox::information(this,tr("Detail"),detail);  
}
Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐