【发布时间】:2019-05-26 18:17:50
【问题描述】:
我正在 Qt 中编写一个简单的基于 TCP 的网络应用程序,并希望使用 QDataStream 和 QByteArray 通过网络发送数据。问题是当我将数据放入QByteArray 时,它们被“归零”。例如(MainWindow 中连接定时器超时信号的槽):
void MainWindow::SendPlayer1Data(){
QByteArray block;
QDataStream s(&block, QIODevice::OpenModeFlag::ReadWrite);
QString h="hello";
s<<h;
qDebug() << "h: " << data;
qDebug() << "block: " << QString(block); // equivalent to s >> h on receiving end
qDebug() << "block[0]: " << int(block[0]);
}
h: "hello"
block: ""
block[0]: 0
我一开始收到"hello",但之后我只收到""。 qint32 也是如此。客户端和服务器都显示 QByteArray 大小为 14 字节,因此 QDataStream 将数据写入该数组,但它使它们成为 0(当我使用 s >> h 然后使用 qDebug() << h 时,它显示 "")
【问题讨论】:
标签: c++ qt qbytearray qdatastream