0
点赞
收藏
分享

微信扫一扫

二、QUdpSocket传输之QDataStream封装数据

boom莎卡拉卡 2022-06-21 阅读 20

发送数据

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 条评论