新创建的线程中QTcpsocket不能接收数据?
QT Examples 中的例子
void FortuneServer::incomingConnection(int socketDescriptor)
{
QString fortune = fortunes.at(qrand() % fortunes.size());
FortuneThread *thread = new FortuneThread(socketDescriptor, fortune, this);
connect(thread, SIGNAL(finished()), thread, SLOT(deleteLater()));
thread->start();
}
void FortuneThread::run()
{
QTcpSocket tcpSocket;
if (!tcpSocket.setSocketDescriptor(socketDescriptor)) {
emit error(tcpSocket.error());
return;
}
// 这里tcpSocket貌似不能接收数据
while (true) {
qDebug() << tcpSocket.bytesAvailable(); //输出总为0,客户端确实在不停发数据
if (tcpSocket.bytesAvailable() > 0) {
// tcpSocket.read((char *)&data, sizeof(data));
break;
}
}
// 但是下面的数据能发送给客户端,不知道为什么啊,盼好心人指点,感激不尽啊!
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();
}