您的位置:首页 > 编程语言 > Qt开发

QT获取本机IP和MAC地址的方法

2010-07-01 08:01 381 查看
QNetworkInterface localInterface =localInterface.interfaceFromName("设备名称 例如 eth0");

QString MAC =localInterface.hardwareAddress()/* "90:FB:A6:11:52:63"*/;

int localNetmask = 0xFFFFFF00;

int localIP ;

for(int i =0; i < localInterface.addressEntries().size(); i ++)

{

if( !localInterface.addressEntries().at(i).ip().isNull() &&localInterface.addressEntries().at(i).ip().protocol()==QAbstractSocket::IPv4Protocol)

{

localIP = localInterface.addressEntries().at(i).ip().toIPv4Address();

localNetmask = localInterface.addressEntries().at(i).netmask().toIPv4Address();

break;

}

}

以上方法貌似某些情况下也不好使,可以试试下面的方法:

QString localHostName=QHostInfo::localHostName();

QHostInfo hostInfo=QHostInfo::fromName(localHostName);

QList<QHostAddress>listAddress=hostInfo.addresses();

for(int j = 0; j < listAddress.size(); j++)

{

if(!listAddress.at(j).isNull() && listAddress.at(j).protocol() == QAbstractSocket::IPv4Protocol

&& listAddress.at(j) != QHostAddress::LocalHost)

{

emit this->sendMsg(listAddress.at(j).toString());

break;

}

}

获取本机有效IP地址、掩码、网关、MAC地址,一直以来我都没找到有效方法,以前用MFC时也是这样,真无语了...

再或者:

[code] QList<QHostAddress>listAddress = QNetworkInterface::allAddresses();
for(int j = 0; j < listAddress.size(); j++)

{

if(!listAddress.at(j).isNull() && listAddress.at(j).protocol() ==  QAbstractSocket::IPv4Protocol

&& listAddress.at(j) != QHostAddress::LocalHost)

       {

localIPAddress = listAddress.at(j).toString();

break;

}

}

[/code]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: