Zdravím, chtěl bych udělat server (se spojením TCP), který bude připojené clienty obsluhovat každého zvlášť v threadu. Mám třídu Server (dědí QTcpServer) a jeho reimplementovanou funkci incomingConnection(), kde vytvořím nový thread:
Thread *thread = new Thread(this, socketDescriptor);
connect(thread, SIGNAL(finished()), thread, SLOT(deleteLater()));
thread->start();
connect(thread, SIGNAL(acceptedRequest(QString)), this, SLOT(acceptedRequest(QString)));
poté:
void Thread::run() {
// pokud nepujde novemu socketu nastavit predavany descriptor
tcpSocket = new QTcpSocket();
if(!tcpSocket->setSocketDescriptor(socketDescriptor)) {
emit error(tcpSocket->error());
return;
}
connect(tcpSocket, SIGNAL(readyRead()), this, SLOT(receivingRequest()));
//emituji signal o odeslani pozadavku na login
emit acceptedRequest("NEW");
exec();
}
Po prvním připojením proběhne vše v pořádku. Clientovi je odeslán požadavek na login. Jenže odpověď která přijde už není serverem zpracována. Thread je už "mrtví" a na nic nereaguje.
Nevím jak mám zajistit, aby byl thread spuštění a čekal na další příchozí požadavek.
Díky za každý tip