PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : QDns Problem



Tec
11-05-2003, 19:47
Würde gerne eine IP in dessen Namen umwandeln und umgekehrt. Hat mir da jemand einen funktionierenden Quellcode?

anda_skoa
11-05-2003, 20:11
Folgendes ist die Datei qdnstest.cpp



#include <qapplication.h>
#include <qdns.h>
#include <qhostaddress.h>
#include <qstringlist.h>

class DNS : QObject
{
Q_OBJECT
public:
DNS() : m_dns(0), m_mode(0) {
startNameToAddress();
}


protected:
void startNameToAddress() {
qDebug("lookup of localhost");
m_dns = new QDns("localhost");
QObject::connect(m_dns, SIGNAL(resultsReady()), this,
SLOT(ready()));
m_mode = 0;
}

void startAddressToName() {
qDebug("lookup of 127.0.0.1");
QHostAddress addr;
addr.setAddress("127.0.0.1");
m_dns = new QDns(addr);
QObject::connect(m_dns, SIGNAL(resultsReady()), this,
SLOT(ready()));
m_mode = 1;
}

protected slots:
void ready() {
if (m_mode == 0)
{
QValueList<QHostAddress> list = m_dns->addresses();
for (uint i = 0; i < list.count(); ++i)
{
qDebug("Address %d: %s", (i+1),
(const char*) list[i].toString());
}

delete m_dns;
startAddressToName();
}
else
{
QStringList list = m_dns->hostNames();
for (uint i = 0; i < list.count(); ++i)
{
qDebug("Hostname %d: %s", (i+1),
(const char*) list[i]);
}

delete m_dns;
qApp->quit();
}
}

protected:
QDns* m_dns;
int m_mode;
};

int main(int argc, char** args)
{
QApplication app(argc, args);

DNS dns;

return app.exec();
}

#include "qdnstest.moc"


#> moc -o qdnstest.moc qdnstest.cpp

#> g++ -Wall -o qdnstest qdnstest.cpp -lqt-mt -L$QTDIR/lib -I$QTDIR/include

Ciao,
_

Tec
11-05-2003, 22:53
Danke für den Quellcode. Nur leider funktioniert er nicht ganz korrekt. Die Ausgabe sieht folgendermassen aus:

lookup of localhost
Address 1: 127.0.0.1
lookup of 127.0.0.1
Segmentation fault

anda_skoa
11-05-2003, 23:12
hmm, funkt bei mir einwandfrei :(

Ich attache mal meine Datei.
Die .txt Endung weglöschen

Ciao,
_

Tec
11-05-2003, 23:19
Hm tritt wieder auf der Fehler. Muss wohl an meinem System liegen. Trotzdem danke für die Hilfe.