使用C++QT在JSON内容前面加上JSON的长度使用TCP发送给服务器端
以下是一个示例代码,展示如何使用C++ QT在JSON内容前面加上JSON的长度并使用TCP发送给服务器端:
#include <QTcpSocket>
#include <QJsonDocument>
#include <QJsonObject>
void sendJsonToServer(const QJsonObject& json)
{
// 将JSON转换为字节数组
QByteArray jsonBytes = QJsonDocument(json).toJson(QJsonDocument::Compact);
// 计算JSON字节数组的长度,使用4个字节表示
int jsonLength = jsonBytes.size();
QByteArray lengthBytes;
lengthBytes.resize(4);
lengthBytes[0] = (jsonLength >> 24) & 0xFF;
lengthBytes[1] = (jsonLength >> 16) & 0xFF;
lengthBytes[2] = (jsonLength >> 8) & 0xFF;
lengthBytes[3] = jsonLength & 0xFF;
// 将长度字节数组和JSON字节数组拼接在一起
QByteArray messageBytes = lengthBytes + jsonBytes;
// 创建TCP socket并连接到服务器端
QTcpSocket socket;
socket.connectToHost("server-address", 12345);
if (!socket.waitForConnected()) {
qDebug() << "Failed to connect to server";
return;
}
// 发送消息给服务器端
qint64 bytesWritten = socket.write(messageBytes);
if (bytesWritten != messageBytes.size()) {
qDebug() << "Failed to send message to server";
}
socket.waitForBytesWritten();
}
在这个示例代码中,我们首先将JSON对象转换为字节数组。然后,我们计算JSON字节数组的长度,并使用4个字节表示。接下来,我们将长度字节数组和JSON字节数组拼接在一起,形成一个完整的消息字节数组。最后,我们创建一个TCP socket并连接到服务器端,发送消息字节数组给服务器端。
需要注意的是,在实际使用中,我们可能需要处理网络错误、消息分段发送等情况,以确保消息能够正确地发送给服务器端
原文地址: https://www.cveoy.top/t/topic/eF2i 著作权归作者所有。请勿转载和采集!