weiweiqiao |
2017-06-19 21:07 |
关于Qt中tcp/udp编程的问题
如题,我在看《CppGuiProgrammingWithQt4》书介绍tcp/udp编程时,对于tcp使用类似下列code进行读取,- 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编程可以使用类似的代码进行读取数据么?我在书上看都是类似以下代码:
- 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; }
|
|