我正在 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
)