ZBLOG

void tcpServer::startSendpaper(QByteArray json_data) { QHash::const_iterator it; for (it = ConnectClientInfo::GetSocketHash().constBegin(); it != ConnectClientInfo::GetSocketHash().constEnd(); ++it) { int sizeWritten ...

如果 json_data 数据足够长需要进行分包发送,你可以在发送之前将数据分割成多个小块,并分别发送。以下是一个简单的示例代码,演示了如何将数据分割成固定大小的块并进行逐一发送:

void tcpServer::startSendpaper(QByteArray json_data)
{
    int chunkSize = 1024; // 设置每个数据块的大小为 1024 字节

    QHash<int, QString>::const_iterator it;
    for (it = ConnectClientInfo::GetSocketHash().constBegin(); it != ConnectClientInfo::GetSocketHash().constEnd(); ++it) {
        int bytesWritten = 0;

        while (bytesWritten < json_data.size()) {
            QByteArray chunk = json_data.mid(bytesWritten, chunkSize); // 获取当前数据块
            int sizeWritten = send(it.key(), chunk, chunk.size(), 0); // 发送当前数据块
            qDebug() << "SendToBlack sizeWritten: " << sizeWritten << endl;

            if (sizeWritten == -1) {
                qDebug() << "Error sending data to socket";
                break;
            }

            bytesWritten += sizeWritten; // 更新已发送字节数
        }
    }
}

在这个示例中,我们定义了一个 chunkSize 变量来表示每个数据块的大小。然后,在循环中逐一提取出 json_data 的片段,并通过 send 函数发送。如果需要处理错误或者确认所有数据都已经成功发送,可能还需要对代码做进一步调整。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=18571

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?