我有一条 json 消息要通过 QTcpSocket 发送。在发送消息之前,Json 消息的格式如下:
情况1 :
//Heartbeat = QString("{\"messageType\":\"Heartbeat\", \"Thread_Name\":%1, \"Heartbeat\":%2}").arg(Thread_Name).arg(HbCount); //clients Heartbeat
案例2:`
Heartbeat = QString("{ \
\"messageType\":\"Heartbeat\",\
\"Thread_Name\":\"%1\", \
\"Heartbeat\":%2 \
}").arg(Thread_Name).arg(HbCount); //clients Heartbeat
当 QString 准备好时,它通过 QTcpSocket 传输,如下所示:
_pSocket->write(Heartbeat.toLatin1());
_pSocket->flush();
_pSocket->waitForBytesWritten();
在接收端,套接字在这两种情况下都能接收数据。但是当使用 QJsonDocument 解析接收到的数据时,案例 1 无法提供空的 json 文档,而案例 2 可以提供所需的 JsonDoc。
这是接收端代码:
QByteArray Data = socket->readAll(); //read data from socket in to a QByteArray
QJsonDocument JsonDoc = QJsonDocument::fromJson(Data); //convert QByteArray to QJsonDocument
两种情况有什么区别?两者之间最好的方法是什么?