TCP解决粘包问题(结构数据封包拆包)

TCP协议使用字节流传输可能导致丢包和粘包现象。为了解决这个问题,需要定义封包规则,即在数据前后添加包头和包尾标识,数据类型和长度信息。封包通常利用memcpy函数,而拆包则涉及根据包结构解析数据。这种策略在多文件传输中表现出色,避免了之前方法的问题。
摘要由CSDN通过智能技术生成

前言

TCP协议(Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的通信协议,即TCP采用字节流的方式,以字节为单位传输字节序列。
如果简单的发送长串的数据流,那么我们接收到的就是一串无规则的字节流,即不知道哪里开始读,到哪里截止,那么就会出现丢包、粘包现象。如果要让这无规则的字节流有规则,那么就需要我们去定义一个规则,那便是所谓的“封包规则”,相对应的就是“拆包规则”。

封包

一、包结构

简单来说就是给每次发送的完整数据进行包装处理,在包装纸上打上标签,来告诉别人里面都有啥,那么我们就可以通过包装纸来进行分辨。
一般封包结构如下:
在这里插入图片描述
其中,包头与包尾标识只是用来寻找数据,数据类型标识可以对应区别不同结构数据解码规则,数据长度可以用来判断数据是否完整。

typedef struct
{
   
	unsigned long packHead
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值