我正在尝试使用QHostInfo
或QDnsLookUp
查找主机名并获取QHostAddress列表。我更喜欢QHostInfo(界面更简单)但我也试过QDnsLookUp。
在第一种情况下,我使用QHostInfo::lookupHost()
静态函数,然后使用QHostInfo::addresses()
在第二种情况下,我使用QDnsLookup::lookup()
,类型设置为QDnsLookup::A
(IPv4地址记录),我得到QDnsLookup::hostAddressRecords()
的结果(我得到{的值{1}}元素)。
嗯,两种方法都以某种方式工作,但我只得到一个结果......在这两种情况下,它应该是文档中的结果列表......但我的列表只包含一个元素......
我是否应该设置一些选项或其他内容以获取完整列表?什么可能出错?
答案 0 :(得分:0)
您需要将结果存储在列表中,例如:
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;
}
答案 1 :(得分:0)
在Dig - Google Apps的帮助下,我发现QDnsLookup::A
选项不是正确的解决方案。我必须使用QDnsLookup::ANY
才能拥有完整的列表。