QDnsLookup没有发出finished(),无限等待

时间:2015-07-06 22:42:47

标签: qt

我有多个DNS记录(MX,CNAME,TXT),我想阅读TXT记录内容。

lookup()函数永远不会发出finished(),我正在使用这段代码来测试:

QDnsLookup m_dns = new QDnsLookup(this);
connect(m_dns, SIGNAL(finished()), this, SLOT(onHandle()));

m_dns->setType(QDnsLookup::TXT);
m_dns->setName("uol.com.br");
m_dns->lookup();

void Update::onHandle()
{
  if (m_dns->error() != QDnsLookup::NoError)
      qDebug() << m_dns->error() << m_dns->errorString();

  foreach (const QDnsServiceRecord &record, m_dns->serviceRecords())
    qDebug() << "Name:   " << record.name();

  emit handled();
}

如果我使用在线服务阅读记录,它就有效!

1 个答案:

答案 0 :(得分:0)

onHandle插槽应该是m_dns-&gt; textRecords(),而不是m_dns-&gt; serviceRecords()。

正确的代码:

  foreach (const QDnsTextRecord &record , m_dns->textRecords()) {
    qDebug() << "Values: " << record.values();
    qDebug() << "Name:   " << record.name();
 }