• 3191阅读
  • 0回复

[提问]关于Qt中tcp/udp编程的问题 [复制链接]

上一主题 下一主题
离线weiweiqiao
 

只看楼主 倒序阅读 楼主  发表于: 2017-06-19
如题,我在看《CppGuiProgrammingWithQt4》书介绍tcp/udp编程时,对于tcp使用类似下列code进行读取,
  1. QDataStream in(&tcp_socket_);
  2.     in.setVersion(QDataStream::Qt_5_0);
  3.     forever {
  4. //读取数据流,获取整个数据的长度信息
  5.         
  6. if (0 == next_block_size_) {
  7.             if (tcp_socket_.bytesAvailable() < sizeof(quint16)) {
  8.                 break;
  9.             }
  10.             in >> next_block_size_;
  11.         }
  12. //当整个数据流被读取后跳出
  13.         if (tcp_socket_.bytesAvailable() < next_block_size_) {
  14.             break;
  15.         }
  16.         QDate date;
  17.         QTime departure_time;
  18.         QTime arrival_time;
  19.         quint16 duration;
  20.         quint8 changes;
  21.         QString train_type;
  22.         in >> date >> departure_time >> duration >> changes >> train_type;
想请教下,udp编程可以使用类似的代码进行读取数据么?我在书上看都是类似以下代码:
  1. QByteArray data_block;
  2.     do {
  3.         data_block.resize(pendingDatagramSize());
  4.         readDatagram(data_block.data(), data_block.size());
  5.     } while (hasPendingDatagrams());
  6.     QDataStream in(&data_block, QIODevice::ReadOnly);
  7.     in.setVersion(QDataStream::Qt_5_0);
  8.     in >> cat_62_;
  9.     if (CAT_62_INDEX != cat_62_) {
  10.         return;
  11.     }
  12.     in >> block_size_;
  13.     if (data_block.size() != block_size_) {
  14.         return;
  15.     }
  16.     QByteArray block_data;
  17.     in >> block_data;
  18.     if (block_data.size() != (block_size_ - 3)) {
  19.         return;
  20.     }



Jobs Insanely Great.
快速回复
限100 字节
 
上一个 下一个