yacreader/YACReaderLibrary/ip_config_helper.cpp
2023-04-07 20:22:49 +02:00

34 lines
925 B
C++

#include <QNetworkInterface>
#include "ip_config_helper.h"
#include "qnaturalsorting.h"
// 192.168 (most comon local subnet for ips are always put first)
// IPs are sorted using natoral sorting
QList<QString> getIpAddresses()
{
auto ipComparator = [](const QString &ip1, const QString &ip2) {
if (ip1.startsWith("192.168") && ip2.startsWith("192.168"))
return naturalSortLessThanCI(ip1, ip2);
if (ip1.startsWith("192.168"))
return true;
if (ip2.startsWith("192.168"))
return false;
return naturalSortLessThanCI(ip1, ip2);
};
QList<QString> addresses;
for (auto add : QNetworkInterface::allAddresses()) {
// Exclude loopback, local, multicast
if (add.isGlobal()) {
addresses.push_back(add.toString());
}
}
std::sort(addresses.begin(), addresses.end(), ipComparator);
return addresses;
}