在某些使用场景下,需要通过tcp/ip,websocket等方式在两个程序之间进行通讯。
而在进行通讯时又希望使用到QVariant的便利,就可以通过序列化技术。
在程序A中将QVariant进行序列化得到二进制数据,然后将数据发给另外一个软件,然后让其解包使用。
//数据缓存
QByteArray buffer;
// QDataStream stream(buffer); //报错 QIODevice::write (QBuffer): ReadOnly device
QDataStream stream(&buffer, QIODevice::Truncate | QIODevice::WriteOnly);
QVariantMap map;
map.insert("ab", 12345);
map.insert("12", "abcdefg");
//序列化完成
stream << map;
qDebug() << buffer;
//收到发送过来的二进制数据,对其进行解包(反序列化)
QDataStream inStream(buffer);
QVariantMap inMap;
inStream >> inMap;
qDebug() << inMap;