Я пытаюсь использовать QHostInfo
или же QDnsLookUp
найти имя хоста и получить список QHostAddress. я бы предпочел QHostInfo (интерфейс проще) но я пробовал также QDnsLookUp.
В первом случае я использую QHostInfo::lookupHost()
статическая функция, а затем я получаю адреса из результата с QHostInfo::addresses()
Во втором случае я использую QDnsLookup::lookup()
с типом, установленным на QDnsLookup::A
(Записи адресов IPv4) и я получаю результаты с QDnsLookup::hostAddressRecords()
(и я получаю значение QDnsHostAddressRecord
элементы).
Хорошо, оба метода работают как-то, но я получаю только один результат … в обоих случаях это должен быть список результатов из документации … но мой список содержит только один элемент …
Есть ли какой-то вариант или что-то еще, что я должен установить, чтобы получить полный список? Что могло пойти не так?
Вам нужно сохранить результат в виде списка, несколько примеров:
QString myClass::getBroadWiFiAddress()
{
QString ipAddress;
QNetworkInterface wifi;
// Get WiFi interface
QList<QNetworkInterface> interfceList = QNetworkInterface::allInterfaces();
for (int i = 0; i < interfceList.size(); ++i)
{
if (interfceList.at(i).name().contains("wireless") && interfceList.at(0).isValid() && interfceList.at(i).IsUp)
{
//qDebug() << "Interfaces:" << i << interfceList.at(i).name() << " / " << interfceList.at(i).humanReadableName();
wifi = interfceList.at(i);
break;
}
}
QList<QHostAddress> ipAddressesList = wifi.allAddresses();
// use the first non-localhost IPv4 address
for (int i = 0; i < ipAddressesList.size(); ++i) {
if (ipAddressesList.at(i) != QHostAddress::LocalHost &&
ipAddressesList.at(i).toIPv4Address() ) {
ipAddress = ipAddressesList.at(i).toString();
//qDebug() << "Using following IP Address:" << ipAddress;
break;
}
}
//qDebug() << "getBroadWiFiAddress" << ipAddress;
return ipAddress;
}
С помощью Копать — Google Apps Я узнал, что QDnsLookup::A
вариант не был правильным решением. Я должен использовать QDnsLookup::ANY
для того, чтобы иметь полный список.