二、QUdpSocket传输之QDataStream封装数据

发送数据

void Dialog::on_btnSend_clicked()
{
    QString msg = ui->leContent->toPlainText().trimmed();
    QString targetIp = ui->leHost->text().trimmed();
    int targetPort = ui->sbPort->value();
    if (this->sessionInfo) {
        //待传输数据
        QByteArray packData = msg.toUtf8();
        //带标识的待发送缓存池
        QByteArray sendData;
        //利用缓存池初始化 QDataStream 对象
        QDataStream sendCmd(&sendData, QIODevice::WriteOnly);
        //设置 QDataStream 版本(发送、接收端要保持一致)
        sendCmd.setVersion(QDataStream::Qt_5_9);
        //打包数据
        sendCmd<<((qint64)0)<<((qint64)123)<<(bool)false<<packData;
        //将设备的指针置为0,这样就能重头开始赋值
        sendCmd.device()->seek(0);
        //这里就是给 ((qint64)0) 赋值
        sendCmd<<((qint64)sendData.size());
        //发送数据
        this->sessionInfo->doWrite(sendData, targetIp, targetPort);
    }
}

接收数据

void Dialog::slotRead(NetAPI::SessionInfo *sessionInfo, const QByteArray &data, int size)
{
    Q_UNUSED(sessionInfo);
    Q_UNUSED(size);

    //对应数据包中的数据类型
    qint64 len;
    qint64 feature;
    bool compress;
    QByteArray receiveData;

    //读取数据包中的数据
    QDataStream ds(data);
    ds>>len>>feature>>compress>>receiveData;
    qDebug() << QString::number(len);
    qDebug() << QString::number(feature);
    qDebug() << compress;;
    ui->plainTextEdit->appendPlainText(receiveData);
}

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值