ich hab mich in letzter zeit etwas mit threads beschäftigt, und jetzt habe ich da eine verständnisfragen:
Laut dem threaded fortune server
Code: Alles auswählen
FortuneThread::FortuneThread(int socketDescriptor, const QString &fortune, QObject *parent)
: QThread(parent), socketDescriptor(socketDescriptor), text(fortune)
{
}
void FortuneThread::run()
{
QTcpSocket tcpSocket;
if (!tcpSocket.setSocketDescriptor(socketDescriptor)) {
emit error(tcpSocket.error());
return;
}
QByteArray block;
QDataStream out(&block, QIODevice::WriteOnly);
out.setVersion(QDataStream::Qt_4_0);
out << (quint16)0;
out << text;
out.device()->seek(0);
out << (quint16)(block.size() - sizeof(quint16));
tcpSocket.write(block);
tcpSocket.disconnectFromHost();
tcpSocket.waitForDisconnected();
}
Als beispiel:
Code: Alles auswählen
FortuneThread::FortuneThread(int socketDescriptor, const QString &fortune, QObject *parent)
: QThread(parent), socketDescriptor(socketDescriptor), text(fortune)
{
}
void FortuneThread::run()
{
connect(tcpSocket, SIGNAL(readReady()), this, SLOT(readData()));
exec();
}
FortuneThread::readData()
{
//...
//read data from socket
//...
}
Danke!
Mfg Bert