• 3100阅读
  • 1回复

[提问]UDP接收内容如何读取 [复制链接]

上一主题 下一主题
离线raintwice
 

只看楼主 正序阅读 楼主  发表于: 2015-12-03
void Dialog::processPendingDatagrams()
{
    QByteArray datagramRecv;
    QHostAddress sendHost;
    quint16 sendPort = 0;
    do
    {
        datagramRecv.resize(udpSocketTer.pendingDatagramSize());
        udpSocketTer.readDatagram(datagramRecv.data(),datagramRecv.size(), &sendHost, &sendPort);

    }while(udpSocketTer.hasPendingDatagrams());

    QString brr(datagramRecv);
    qDebug()<<"1: "<<brr;

    QDataStream in(&datagramRecv, QIODevice::ReadWrite);
    in.setVersion(QDataStream:qt_4_8);

    QString arr;
    in>>arr;
    qDebug()<<"2: "<<arr;
//    ui->tEditRecvContent->setText(arr);

}
上面接收程序中的一部分,打印两次QString类内容,一次由  QString brr(datagramRecv) 直接构造生成,另一次有QDataStream类输出,为什么第一次打印没有内容,第二次正确输出收到的报文? 应该如何处理QByteArray 类接收报文呢?
离线z55716368

只看该作者 1楼 发表于: 2015-12-03
虽然内存中都是二进制存储,不过数据类型还是很多的,以前看的tcp/udp教程都说使用QDataStream需要in.setVersion(QDataStream:qt_4_8);设置版本吧、是不是因为这个原因呢?
每一个问题 都是一次进步
快速回复
限100 字节
 
上一个 下一个