最近查了一下用qt如何获取,其实网上都有很多方法,而且都能够获取,但是大多数是用的遍历的方法,不能够筛选。所以自己就写了一个程序,一台电脑上只有一张无线网卡和一张有线网卡是可以区分的,如果多了的话,就没有试过了(没有这么多网卡),所以贴出来以免以后忘了,也方便大家参考。
QString MainWindow::getLocalIp(QString netInterfaceName)
{
QString ipAddr;
QList<QNetworkInterface> network = QNetworkInterface::allInterfaces();
foreach (QNetworkInterface net, network)
{
<span style="color:#ff0000;">QString netName = net.humanReadableName();</span>
<span style="white-space:pre"> </span><span style="color:#33ff33;">//qDebug() << netName;</span>
if (netName == netInterfaceName)
{
QList<QNetworkAddressEntry> allIP = net.addressEntries();
foreach(QNetworkAddressEntry ip, allIP)
{
if (ip.ip().protocol() == QAbstractSocket::IPv4Protocol)
{
ipAddr = ip.ip().toString();
}
}
}
}
return ipAddr;
}<pre name="code" class="cpp">void MainWindow::showIP()
{
ui->showInfoText->clear();
QString localIP = getLocalIp(QStringLiteral("本地连接"));
ui->showInfoText->append("ip: " + localIP);
}
如果不知道自己的网卡叫什么名字,可以把绿色部分的注释有效,看看自己的网卡叫什么名字,然后根据这些名字来选择筛选。
本文介绍了一种使用Qt在C++中获取指定网络接口名称的本地IPv4地址的方法。通过编写一个简单的程序,可以针对特定的网络适配器获取其IP地址,适用于只有一个无线或有线连接的场景。
2663

被折叠的 条评论
为什么被折叠?



