在一台主机上,会同时存在多个网卡,每个网卡都有一个mac地址,每个张网卡都有可能配置有IP地址。
获取mac地址:
QList<QNetworkInterface> list = QNetworkInterface::allInterfaces();
QString mac;
foreach(QNetworkInterface i, list) {
mac = i.hardwareAddress();
if ((mac.length() == 17) && (mac != "00:00:00:00:00:00")) {
mac.replace(":", "-");
macAddrs.append(mac);
}
}
qDebug()<<macAddrs;
获取IP地址:
QStringList adds;
QList<QHostAddress> list = QNetworkInterface::allAddresses();
foreach (QHostAddress address, list) {
if(address.protocol() == QAbstractSocket::IPv4Protocol) {
adds.append(address.toString());
}
}
qDebug()<<"all ips :"<<adds;
return adds;
查询本机IP地址:
通过域名查询系统查询本机IP,此种方法再需要将本机ip告知外界的情况下比较有用。
QString localHostName = QHostInfo::localHostName();
qDebug() <<"localHostName:"<<localHostName;
QHostInfo info = QHostInfo::fromName(localHostName);
qDebug()<<info.addresses();
foreach(QHostAddress address,info.addresses())
{
if(address.protocol() == QAbstractSocket::IPv4Protocol) {
qDebug() <<"IPV4 Address: "<< address.toString()<<QString("%1").arg(address.toIPv4Address(), 0, 16).toUpper();
}
}