QDataStream和QByteArray

一个写操作可以参考:

QDataStream &operator >>(QDataStream &in, SerializedMessage &message)
{
   qint32 type;
  qint32 dataLength;
  QByteArray dataArray;
  in >> type >> dataLength;
  dataArray.resize(dataLength);  // <-- You need to add this line.
  int bytesRead = in.readRawData(dataArray.data(), dataLength);
  // Rest of function goes here.
}
时间: 2024-12-21 23:41:11

QDataStream和QByteArray的相关文章

【转】从QDataStream向QByteArray中写入数据时的注意点(QT)

最近发现从QDataStream向QByteArray中写入数据常常是写不进去的,通过查看QT的源码: QDataStream &operator>>(QDataStream &in, QByteArray &ba){ ba.clear(); quint32 len; in >> len; if (len == 0xffffffff) return in; const quint32 Step = 1024 * 1024; quint32 allocated

QTcpSocket 及 TCP粘包分析

----我的生活,我的点点滴滴!! 这两天用Qt简单的实现一个tcp多线程client,在此记录下知识. 一.长连接与短连接 1.长连接 Client方与Server方先建立通讯连接,连接建立后不断开, 然后再进行报文发送和接收. 2.短连接 Client方与Server每进行一次报文收发交易时才进行通讯连接,交易完毕后立即断开连接.此种方式常用于一点对多点通讯,比如多个Client 连接一个Server. 二.什么时候需要考虑粘包问题? 1.如果利用tcp每次发送数据,就与对方建立连接,然后双

QT开发(二十八)——QT常用类(二)

QT开发(二十八)--QT常用类(二) 一.QDir 1.QDir简介 QDir提供对目录结构及其内容的访问. QDir通过相对或绝对路径指向一个文件. 2.QDir成员函数 QDir主要成员函数如下: QDir::QDir ( const QDir & dir ) QDir::QDir ( const QString & path = QString() ) Dir::QDir ( const QString & path, const QString & nameFil

Qt5_TCP_Client01

ZC: 代码来自<<Qt及Qt Quick开发实战精解>>"代码\src\5\5-3"("代码\src\5\5-4"里面的代码差不多,不知有何差别...貌似应该是更为完善) ZC: 这是 Qt5 TCP客户端 简单测试类 1.TtcpClient.h #ifndef TTCPCLIENT_H #define TTCPCLIENT_H #include <QObject> #include <QTcpSocket> cl

4.关于QT中的QFile文件操作,QBuffer,Label上添加QPixmap,QByteArray和QString之间的区别,QTextStream和QDataStream的区别,QT内存映射(

 新建项目13IO 13IO.pro HEADERS += \ MyWidget.h SOURCES += \ MyWidget.cpp QT += gui widgets network CONFIG += C++11 MyWidget.h #ifndef MYWIDGET_H #define MYWIDGET_H   #include <QWidget>   class MyWidget : public QWidget {     Q_OBJECT public:     expli

转载:QByteArray和QVariant

前面我们在介绍QString的最后部分曾经提到了QByteArray这个类.现在我们就首先对这个类进行介绍. QByteArray具有类似与QString的API.它也有相应的函数,比如left(), right(), mid()等.这些函数不仅名字和QString一样,而且也具有几乎相同的功能.QByteArray可以存储原生的二进制数据和8位编码的文本数据. 这句话怎么理解呢?我们知道,计算机内部所有的数据都是以0和1的形式存储的.这种形式就是二进制.比如一串0.1代码:1000,计算机并不

QDataStream 传递自定义的结构

QT自带的QDataStream只能传递它自己要求的数据类型.但是我们可以自己重载QDataStream& operator<<()和QDataStream& operator>>(); mydatastream.h 1 #ifndef MYDATASTREAM_H 2 #define MYDATASTREAM_H 3 4 #include <QDataStream> 5 6 struct UserInfor{ 7 QString id; 8 QStri

QT: QByteArray储存二进制数据(包括结构体,自定义QT对象)

因为利用QByteArray可以很方便的利用其API对内存数据进行访问和修改, 构建数据库blob字段时必不可少; 那如何向blob内写入自定义的结构体和类 1. 利用memcpy拷贝内存数据 //自定义person结构体 Cpp代码   typedef struct { int age; char name[20]; }Person; //向QByteArray写入多个结构体 void writeStruct() { QByteArray ba; ba.resize(2*sizeof(Pers

基于QTcpSocket和QTcpServer的Tcp通讯以及QDataStream序列化数据

最近要在QT下开发Tcp通讯,发送序列化数据以便于接收. 这里涉及到几个问题: 1.QTcpSocket.QTcpServer的通讯 2.QDataStream序列化数据 多的不说,直接上干货!!! 客户端: tcpclient.h 1 #ifndef TCPCLIENT_H 2 #define TCPCLIENT_H 3 4 #include <QMainWindow> 5 #include <qt4/Qt/qtcpsocket.h> 6 #include <Qt/qhos