通过socket发送QMap可以通过以下步骤实现:
以下是一个示例代码,演示了如何通过socket发送QMap(使用JSON格式):
发送端代码:
QMap<QString, QVariant> data;
data["name"] = "John";
data["age"] = 25;
QJsonDocument jsonDoc(QJsonObject::fromVariantMap(data));
QByteArray jsonData = jsonDoc.toJson();
QTcpSocket socket;
socket.connectToHost("127.0.0.1", 1234); // 连接到接收端的IP地址和端口号
if (socket.waitForConnected()) {
socket.write(jsonData); // 发送数据
socket.waitForBytesWritten();
socket.disconnectFromHost();
}
接收端代码:
QTcpServer server;
server.listen(QHostAddress::Any, 1234); // 监听指定端口
if (server.waitForNewConnection()) {
QTcpSocket* socket = server.nextPendingConnection();
if (socket->state() == QAbstractSocket::ConnectedState) {
QByteArray receivedData = socket->readAll(); // 接收数据
QJsonDocument jsonDoc = QJsonDocument::fromJson(receivedData);
QMap<QString, QVariant> receivedMap = jsonDoc.object().toVariantMap();
// 对接收到的QMap进行处理
QString name = receivedMap["name"].toString();
int age = receivedMap["age"].toInt();
qDebug() << "Received data: name=" << name << ", age=" << age;
socket->disconnectFromHost();
}
socket->deleteLater();
}
这是一个简单的示例,仅演示了通过socket发送和接收QMap的基本过程。在实际应用中,你可能需要根据具体需求进行更复杂的数据处理和错误处理。
领取专属 10元无门槛券
手把手带您无忧上云