首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过socket发送QMap?

问如何通过socket发送QMap?
EN

Stack Overflow用户
提问于 2019-05-29 19:24:13
回答 1查看 260关注 0票数 1

我有一个QMap对象:

代码语言:javascript
复制
QMap<QString, int> map; 

我想通过TCP套接字发送它。我是否必须将其转换为JSON,然后发送或?

EN

回答 1

Stack Overflow用户

发布于 2019-05-29 22:34:28

尝试使用这种方法:

在服务器端,使用此命令发送地图:

代码语言:javascript
复制
// to send Map
qint64 SendMap(QMap<String, int> map){
    QByteArray block;
    QDataStream sendStream(&block, QIODevice::ReadWrite);

    sendStream << quint64(0) // for size of data
               << map;       // your map

    sendStream.device()->seek(0); // return back to set data size

    sendStream << (quint64)(block.size() - sizeof(quint64)); // set data size

    return socket->write(block);    // send data
}

在客户端,当您需要地图时,使用此命令读取地图:

代码语言:javascript
复制
// to receive Map
QMap<QString, int> ReceiveMap(QTcpSocket *socket){
    QDataStream readStream(socket);
    quint64 dataBlockSize = 0;

    while(true) {
        if (!dataBlockSize) {
            if (socket->bytesAvailable() < sizeof(quint64)) { // waiting data size 
                break;                                        // to be available
            }
            readStream >> dataBlockSize;
        }

        if (socket->bytesAvailable() < dataBlockSize) { // waiting full data
            break;
        }

        QMap<QString, int> map;
        readStream >> map;

        return map;
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56359469

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档