Qt TCP之自定义通信协议

在已经实现socket通信的前提下,设计了如下的通信格式:

这里写图片描述

假设cmd定义如下:

#ifndef CMD_H
#define CMD_H

//服务器------->客户端
#define     Connet_Success         0x0F00   //连接成功应答包
#define     Login_answer           0x0F01   //登陆结果(也是QString 的一种)
#define     QString_send           0x0F02   //发送字符串
#define     QFile_send             0x0F03   //发送文件
#define     Struct_send            0x0F03   //发送结构体

//客户端------->服务器
#define     Login                  0x0D00   //客户端登陆

#endif // CMD_H

一些变量说明:

    qint64 totalBytes;      //一个数据包MSG部分的完整大小
    qint64 recvdBytes;      //已经收到的字节数
    qint64 serverCmd;       //接受数据包的类型
    QByteArray inBlock;     //接受缓冲
    QByteArray m_buffer;    //缓存上一次或多次的未处理的数据
    QFile *localFile;
    QSqlDatabase db;
    QMutex mutex;
  • 发送QString字符串
void mySocket::sendMSG(QString msg, qint64 cmd)
{
    if(!isValid()) //确保连接仍然有效
    {
        qDebug()<<"losing connect.......";
        return;
    }
    /********************构造数据包************************/
    qint64 totalBytes = 0;
    QByteArray block; //用于暂存我们要发送的数据
    QDataStream output(&block,QIODevice::WriteOnly);//使用数据流写入数据
    output.setVersion(QDataStream::Qt_5_2);
    totalBytes = msg.toUtf8().si
  • 3
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值