我基本上試圖做一個使用Qt4的DNS代理應用程序。如果我將我的DNS名稱服務器設置爲'localhost',那麼我想將所有DNS請求轉發到remoteSocket對象中指定的服務器。除了將數據從remoteSocket對象發送回請求DNS查找的localSocket對象之外,似乎一切正常。Qt4 DNS代理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 2009-09-09 03:18:28
你還沒有告訴我們*它是如何被破壞的,只是它被破壞了。是什麼讓你覺得它壞了?你從調試線獲得什麼輸出?你有什麼試圖解決這個問題?你的readResponse()槽甚至會被調用嗎? 請添加更多信息,我會盡力而且幫助。 – Thomi 2009-09-09 11:40:22