【计算机网络】 粘包问题

文章目录

为什么会产生粘包问题?

tcp是数据流传输,是一种没有边界的,可以合并的传输数据方式。合并就要能拆开,拆不开就是粘包。

解决办法

  1. 设置标志位(起始/结束标志位)

    缺点:数据可能和标志位重合,导致错误拆包

    适用场景:适合用户可输入的内容比较有限比较固定的情况

  2. 固定包大小

    缺点:容易浪费空间和资源

    适用场景:适合每次发的大小基本是固定的

  3. 先发数据长度,然后再发数据包

    缺点:每次会多发一个包,浪费空间

    适用场景:比较通用

  4. 短连接

    缺点:浪费时间和资源

    适用场景:适合网页浏览

先发包大小再发包内容代码示例

cpp 复制代码
struct Node n1;
int nSize = sizeof(n1);
//发送
send(sockClient,(char*)&nSize,sizeof(int),0);//先发包大小
send(sockClient,(char*)&n1,sizeof(n1),0);//发数据包
//接收
int nPackSize = 0;
recv(sockClient,(char*)&nPackSize,sizeof(int),0);//先接收包大小
char* buf = new char[nPackSize];
recv(sockClient,(char*)&buf,nPackSize,0);//再接收包
//回收空间
delete[] buf;
相关推荐
花间相见13 小时前
【计算基础|网络04】—— HTTP接口实战(下):接口测试、鉴权与跨域排错
java·linux·人工智能·后端·python·计算机网络·postman
云运维笔记14 小时前
华为设备IP地址配置全攻略
运维·网络·计算机网络·华为
鹿鸣天涯1 天前
护网专项工作 | 勒索病毒防护指南
网络·计算机网络·安全
z20348315202 天前
计算机网络—数据链路层
计算机网络
孙严Pay2 天前
代付 VS 纯代付
笔记·科技·计算机网络·其他·微信
2501_937860943 天前
上篇:网络编程基础与UDP套接字编程
java·网络·计算机网络
云运维笔记3 天前
IP地址从入门到精通:网络通信的核心基石
运维·网络·计算机网络
boxiansheng1633 天前
408计算机网络
网络·计算机网络·智能路由器
2501_916008894 天前
SSE 和 gRPC 流式接口如何抓包,调试 SSE 与 gRPC 流式接口
网络协议·计算机网络·网络安全·ios·adb·https·udp
布莱克6054 天前
HTTP 状态码详解:从分类到实战
计算机网络·http·状态码