1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- #include <iostream>
- #include <QCoreApplication>
- #include "dns-client/QDnsUdpClient.h"
- #include "dns-client/QDnsTcpClient.h"
- #include "dns-server/QDnsUdpServer.h"
- #include "dns-server/QDnsTcpServer.h"
-
- int main(int argc, char* argv[])
- {
- QCoreApplication app(argc, argv);
-
- QHostAddress bindAddress("127.0.0.1");
- quint16 bindPort = 5053;
-
- auto onRequest = [](QDns::Server::QDnsUdpServer::OnRequestParams params)
- {
- QDns::Base::QDnsPacket answer = params.query.makeAnswer();
- auto header = answer.getHeader();
- header.setReplyCode(QDns::Base::HeaderReplyCode::Refused);
- answer.setHeader(header);
-
- params.sendAnswer(QDns::Server::QDnsServer::SendAnswerParams
- {
- answer
- });
- };
-
- QDns::Server::QDnsTcpServer tcpServer;
- tcpServer.start(bindAddress, bindPort);
- QObject::connect(&tcpServer, &QDns::Server::QDnsServer::onRequest, onRequest);
-
- QDns::Server::QDnsUdpServer udpServer;
- udpServer.start(bindAddress, bindPort);
- QObject::connect(&udpServer, &QDns::Server::QDnsServer::onRequest, onRequest);
-
-
- // QDns::Client::QDnsUdpClient client(QHostAddress("127.0.0.1"));
- // QDns::Client::QDnsUdpClient client(QHostAddress("8.8.8.8"));
- QDns::Client::QDnsTcpClient client(QHostAddress("127.0.0.1"), 5053);
- // QDns::Client::QDnsTcpClient client(QHostAddress("8.8.8.8"));
-
- QList<QString> labels;
- labels << "www.google.fr" << "www.google.com" << "www.rthoni.com";
-
- QObject::connect(&client, &QDns::Client::QDnsClient::onAnswer, [&client, &labels](QDns::Client::QDnsClient::OnAnswerParams params)
- {
- labels.removeOne(params.query.getQueries().at(0).getName());
- for (const auto& answer : params.answer.getAnswerRecords())
- {
- qDebug() << "Answer:" << answer.getName();
- }
- qDebug() << "Answer:" << params.answer.getAnswerRecords().size();
- if (labels.empty())
- {
- client.disconnectFromHost();
- }
- });
-
- QObject::connect(&client, &QDns::Client::QDnsClient::onError, [&client, &labels](QDns::Client::QDnsClient::OnErrorParams params)
- {
- if (params.query.isValid())
- {
- labels.removeOne(params.query.getQueries().at(0).getName());
- }
- qDebug() << "Error:" << params.error;
- if (labels.empty())
- {
- client.disconnectFromHost();
- }
- });
-
- QObject::connect(&client, &QDns::Client::QDnsClient::onStateChanged, [&client, &labels](QDns::Client::QDnsClient::OnStateChangedParams params)
- {
- qDebug() << "State:" << params.state;
- if (params.state == QDns::Client::QDnsClient::ClientState::Connected)
- {
- for (const auto& label : labels)
- {
- client.query(QDns::Base::QDnsPacket::makeSimpleQuery(label, QDns::Base::RecordType::A));
- }
- }
- });
-
- client.connectToHost();
-
-
-
- return app.exec();
- }
|