如题,我在看《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;
- }