前言
TCP协议(Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的通信协议,即TCP采用字节流的方式,以字节为单位传输字节序列。
如果简单的发送长串的数据流,那么我们接收到的就是一串无规则的字节流,即不知道哪里开始读,到哪里截止,那么就会出现丢包、粘包现象。如果要让这无规则的字节流有规则,那么就需要我们去定义一个规则,那便是所谓的“封包规则”,相对应的就是“拆包规则”。
封包
一、包结构
简单来说就是给每次发送的完整数据进行包装处理,在包装纸上打上标签,来告诉别人里面都有啥,那么我们就可以通过包装纸来进行分辨。
一般封包结构如下:
其中,包头与包尾标识只是用来寻找数据,数据类型标识可以对应区别不同结构数据解码规则,数据长度可以用来判断数据是否完整。
typedef struct
{
unsigned long packHead