发送数据

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);
}

Logo

欢迎加入 MCP 技术社区!与志同道合者携手前行,一同解锁 MCP 技术的无限可能!

更多推荐