在Qt中,可以使用QNetworkInterface类来获取本地的IP地址列表,并且过滤掉127.0.0.1。
以下是一个示例代码:
#include <QNetworkInterface>
#include <QDebug>
int main(int argc, char *argv[])
{
Q_UNUSED(argc);
Q_UNUSED(argv);
QList<QHostAddress> ipAddressesList;
// 获取所有网络接口
QList<QNetworkInterface> interfaces = QNetworkInterface::allInterfaces();
// 遍历每个网络接口
foreach (QNetworkInterface interface, interfaces)
{
// 过滤回环接口和非运行状态的接口
if (interface.flags().testFlag(QNetworkInterface::IsLoopBack) || !interface.isValid())
continue;
// 获取该接口下的IP地址列表
QList<QNetworkAddressEntry> addressEntries = interface.addressEntries();
// 遍历每个IP地址条目
foreach (QNetworkAddressEntry entry, addressEntries)
{
// 如果不是IPv4地址,则跳过
if (entry.ip().protocol() != QAbstractSocket::IPv4Protocol)
continue;
// 获取IPv4地址字符串表示形式
QString ipAddress = entry.ip().toString();
// 过滤掉127.0.0.1地址
if (ipAddress != "127.0.0.1")
ipAddressesList.append(entry.ip());
}
}
// 打印过滤后的IP地址列表
foreach (QHostAddress address, ipAddressesList)
{
qDebug() << address.toString();
}
return 0;
}
这段代码遍历了所有网络接口,然后获取每个接口下的IP地址列表,并将过滤掉的IP地址添加到ipAddressesList
中。最后,打印出过滤后的IP地址列表。
请注意,要使用Qt网络模块,需要在.pro文件中添加 QT += network
来链接网络模块。
内容由零声教学AI助手提供,问题来源于学员提问