Essentiellement, j'essaie de créer une application proxy DNS en utilisant Qt4. Si je définis mon serveur de noms DNS sur 'localhost', je veux transférer toutes les requêtes DNS au serveur spécifié dans l'objet remoteSocket. Tout semble fonctionner correctement, sauf renvoyer les données de l'objet remoteSocket à l'objet localSocket qui demande la recherche DNS. Lorsque vous écrivez à localSocket, y a-t-il quelque chose de spécifique que je dois savoir à ce sujet? Le problème semble être dans readResponse().Qt4 DNS Proxy QUdpSocket
#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);
}
Toute aide à ce serait grandement apprécié. – Michael
Vous ne nous avez pas dit * comment * il est cassé, seulement qu'il est cassé. Qu'est-ce qui te fait penser que c'est cassé? Quel résultat obtenez-vous de votre ligne de débogage? Qu'avez-vous essayé de faire pour résoudre le problème? votre slot readResponse() est-il même appelé? S'il vous plaît ajouter plus d'infos et je vais essayer de vous aider. – Thomi