查看完整版本: [-- 关于Qt中tcp/udp编程的问题 --]

QTCN开发网 -> Qt基础编程 -> 关于Qt中tcp/udp编程的问题 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

weiweiqiao 2017-06-19 21:07

关于Qt中tcp/udp编程的问题

如题,我在看《CppGuiProgrammingWithQt4》书介绍tcp/udp编程时,对于tcp使用类似下列code进行读取,
  1. QDataStream in(&tcp_socket_);
        in.setVersion(QDataStream::Qt_5_0);

        forever {

    //读取数据流,获取整个数据的长度信息
            
    if (0 == next_block_size_) {
                if (tcp_socket_.bytesAvailable() < sizeof(quint16)) {
                    break;
                }

                in >> next_block_size_;
            }
    //当整个数据流被读取后跳出
            if (tcp_socket_.bytesAvailable() < next_block_size_) {
                break;
            }

            QDate date;
            QTime departure_time;
            QTime arrival_time;
            quint16 duration;
            quint8 changes;
            QString train_type;

            in >> date >> departure_time >> duration >> changes >> train_type;
想请教下,udp编程可以使用类似的代码进行读取数据么?我在书上看都是类似以下代码:
  1. QByteArray data_block;

        do {
            data_block.resize(pendingDatagramSize());
            readDatagram(data_block.data(), data_block.size());
        } while (hasPendingDatagrams());

        QDataStream in(&data_block, QIODevice::ReadOnly);
        in.setVersion(QDataStream::Qt_5_0);

        in >> cat_62_;

        if (CAT_62_INDEX != cat_62_) {
            return;
        }

        in >> block_size_;

        if (data_block.size() != block_size_) {
            return;
        }

        QByteArray block_data;

        in >> block_data;

        if (block_data.size() != (block_size_ - 3)) {
            return;
        }





查看完整版本: [-- 关于Qt中tcp/udp编程的问题 --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled