Я пытаюсь сделать прокси-приложение DNS с помощью Qt4. Если я настрою свой DNS-сервер имен на «localhost», тогда я хочу перенаправить все DNS-запросы на сервер, указанный в объекте remoteSocket. Кажется, что все работает нормально, за исключением отправки данных из объекта remoteSocket обратно в объект localSocket, который запрашивает поиск DNS.Qt4 DNS Proxy QUdpSocket
При написании на localSocket есть ли что-то конкретное, что мне нужно знать об этом? Проблема, похоже, в readResponse().
#include "dns.h"
Dns::Dns()
{
}
void Dns::initSocket()
{
localDatagram = new QByteArray();
remoteDatagram = new QByteArray();
localSocket = new QUdpSocket();
connect(localSocket, SIGNAL(readyRead()), this, SLOT(readRequest()), Qt::DirectConnection);
localSocket->bind(QHostAddress::LocalHost, 53);
remoteSocket = new QUdpSocket();
remoteSocket->connectToHost(QHostAddress("4.2.2.1"), 53);
connect(remoteSocket, SIGNAL(readyRead()), this, SLOT(readResponse()), Qt::DirectConnection);
}
void Dns::readRequest()
{
while (localSocket->hasPendingDatagrams()) {
localDatagram->resize(localSocket->pendingDatagramSize());\
localSocket->readDatagram(localDatagram->data(), localDatagram->size());
remoteSocket->write(*localDatagram);
}
}
void Dns::readResponse()
{
QByteArray bytes(remoteSocket->readAll());
qDebug() << "BYTES: [" << bytes.toBase64() << "]";
localSocket->write(bytes);
}
Любая помощь с этим было бы весьма признателен. – Michael
Вы не сказали нам, как это сломано, только то, что оно сломано. Что заставляет вас думать, что это сломано? Какой результат вы получаете от своей линии отладки? Что вы пытались сделать, чтобы исправить проблему? ваш звонок readResponse() даже вызван? Пожалуйста, добавьте дополнительную информацию, и я попробую и помогу. – Thomi