python 做网站 案例,郴州网站建设推广服务,网站公众平台建设方案,wap网站部署TCP封包拆包前言封包一、包结构二、封包方法拆包总结前言
TCP协议(Transmission Control Protocol#xff09;是一种面向连接的、可靠的、基于字节流的通信协议#xff0c;即TCP采用字节流的方式#xff0c;以字节为单位传输字节序列。 如果简单的发送长串的数据流#xf…
TCP封包拆包前言封包一、包结构二、封包方法拆包总结前言
TCP协议(Transmission Control Protocol是一种面向连接的、可靠的、基于字节流的通信协议即TCP采用字节流的方式以字节为单位传输字节序列。 如果简单的发送长串的数据流那么我们接收到的就是一串无规则的字节流即不知道哪里开始读到哪里截止那么就会出现丢包、粘包现象。如果要让这无规则的字节流有规则那么就需要我们去定义一个规则那便是所谓的“封包规则”相对应的就是“拆包规则”。
封包
一、包结构
简单来说就是给每次发送的完整数据进行包装处理在包装纸上打上标签来告诉别人里面都有啥那么我们就可以通过包装纸来进行分辨。 一般封包结构如下 其中包头与包尾标识只是用来寻找数据数据类型标识可以对应区别不同结构数据解码规则数据长度可以用来判断数据是否完整。
typedef struct
{unsigned long packHead;unsigned long dataType;unsigned long dataLen;char buf[dataLen];unsigned long packTail;
}PACKSTRUCT;二、封包方法
这里封包方法采用memcpy函数对数据进行打包主要就是memcpy函数的调用不了解的可以在封包时发现的关于QIODevice类write函数的坑一文中参考。
拆包
拆包流程图
总结
用该方法进行多文件传输明显会比我之间所用的方法好之前的方法见Qt多文件传输功能实现及方法概述。用该方法的代码之后贴出。