- TCP通信需要自定义消息体,本博文是构建了一个QT下的消息类。
.h
typedef struct
{
unsigned int send_id;
unsigned int recv_id;
unsigned int msg_type : 8;
unsigned int len : 24;
unsigned int conn_type: 8;
unsigned int pkg_num : 8;
unsigned int pkg_idx : 8;
unsigned int rsvd : 8;
unsigned int check_sum;
} DispCtrlMsg;
#ifndef MESSAG_H
#define MESSAG_H
#include "msg_type.h"
#include <QByteArray>
#include <iostream>
class Messag
{
private:
DispCtrlMsg *msgHead;
QByteArray *msgBody;
public:
explicit Messag();
~Messag();
void saveMsgHead(const DispCtrlMsg &head);
void saveMsgBody(const QByteArray &body);
const DispCtrlMsg& getMsgHead(void);
const QByteArray& getMsgBody(void);
Messag &operator=(Messag *pre);
};
#endif
.c
#include "messag.h"
Messag::Messag()
{
msgHead = new DispCtrlMsg();
msgBody = new QByteArray();
}
Messag::~Messag()
{
delete msgHead;
delete msgBody;
}
void Messag::saveMsgHead(const DispCtrlMsg &head)
{
msgHead->check_sum = head.check_sum;
msgHead->conn_type = head.conn_type;
msgHead->len = head.len;
msgHead->load = head.load;
msgHead->msg_type = head.msg_type;
msgHead->pkg_idx = head.pkg_idx;
msgHead->pkg_num = head.pkg_num;
msgHead->recv_id = head.recv_id;
msgHead->rsvd = head.rsvd;
msgHead->send_id = head.send_id;
}
void Messag::saveMsgBody(const QByteArray &body)
{
*msgBody = body;
}
const DispCtrlMsg& Messag::getMsgHead(void)
{
return *msgHead;
}
const QByteArray& Messag::getMsgBody(void)
{
return *msgBody;
}
Messag &Messag::operator=(Messag *pre)
{
this->saveMsgHead(pre->getMsgHead());
this->saveMsgBody(pre->getMsgBody());
}
- 运算符重载:赋值运算符重载,返回Message的引用,使用关键字 operator,使用智能指针,this.