hier mal ein Codeschnipsel:
Code: Alles auswählen
RF_Network_Server_ClientThread::RF_Network_Server_ClientThread(int socketDescriptor, QObject *parent)
: QThread(parent), socketDescriptor(socketDescriptor)
{
connect(&mTcpSocket, SIGNAL(readyRead()),
this, SLOT(readData()));
connect(&mTcpSocket, SIGNAL(disconnected()),
this, SLOT(disconnectClient()));
connect(this, SIGNAL(finished()),
this, SLOT(deleteLater()));
if (!mTcpSocket.setSocketDescriptor(socketDescriptor))
{
///emit error(mTcpSocket.error()); //TODO
return;
}
mBlockSize = 0; //BlockSize for received Data
mPeerAddress = getPeerAddress();
qDebug() << "Client Address: " << mPeerAddress;
qDebug("***RF_Network_Server: ClientThread constructed***");
}
Die Funktionsweise ist Folgende:
Von einem QTcpServer bekomme ich bei eingehender Verbindung mittels folgendem Code:
Code: Alles auswählen
void RF_Network_Server_ListenServer::incomingConnection(int socketDescriptor)
{
emit newConnection(socketDescriptor);
}
Dieses Signal stößt folgenden Slot an in dem der Thread erstellt wird:
Code: Alles auswählen
void Gui::createThread(int socketDescriptor)
{
thread = new RF_Network_Server_ClientThread(socketDescriptor, this);
connect(thread, SIGNAL(dataReceived(QDomDocument*)), this, SLOT( test(QDomDocument*)));
myQList.append(thread);
thread->start();
qDebug() << "Peer-Address: " << thread->getPeerAddress();
}
Ich hoffe jemand kann mir helfen.
Gruß, viper