在Qt的fortuneserver样例中,通过方法
sendFortune()
发送了一个QString。因此需要从QStringList fortunes
中选择一个QString。QByteArray block;
QDataStream out(&block, QIODevice::WriteOnly);
out.setVersion(QDataStream::Qt_4_0);
out << (quint16)0;
out << fortunes.at(qrand() % fortunes.size());
out.device()->seek(0);
out << (quint16)(block.size() - sizeof(quint16));
QTcpSocket *clientConnection = tcpServer->nextPendingConnection();
clientConnection->write(block);
除了单个字符串外,是否还可以发送其他类型的数据,例如文件、图像或多个字符串?
我的第二个问题是:将数据发送为QByteArry的优势是什么,为什么我需要通过设置QDataStream来定义(quint16)
?