【计算机网络】 粘包问题

文章目录

为什么会产生粘包问题?

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;
相关推荐
lazy H1 分钟前
【计算机网络】第 15 篇:Java BIO、NIO 与高并发网络通信——从 Socket 理解 I/O 模型
网络·后端·tcp/ip·计算机网络·nio·408
MicrosoftCloud30 分钟前
计网 11|NAT 与 IP 地址转换:私有地址、NAPT 端口映射
计算机网络·考研·ip地址·408·nat·napt·私有地址
cyf315 小时前
第 02 篇:ARP——IP 地址到 MAC 地址的“翻译官“
tcp/ip·计算机网络·wireshark·以太网·vmware·arp·地址解析协议
2501_9151063214 小时前
抓包抓到乱码或压缩字节怎么解析,TraceEagle五种查看模式和一键解码
网络协议·计算机网络·网络安全·ios·adb·https·udp
流浪00117 小时前
计算机网络篇14:传输层——UDP 协议:8 字节定长报头划出报文边界,16 位端口号完成分用
计算机网络·udp·udp包头结构
MicrosoftCloud20 小时前
计网 09|TCP 流量控制与拥塞控制:rwnd 滑动窗口 + 慢开始/拥塞避免/快重传快恢复
计算机网络·考研·tcp·流量控制·拥塞避免·拥塞控制·慢开始
CQU_JIAKE21 小时前
10.29计算机网络
计算机网络
流浪0011 天前
计算机网络篇13:应用层——HTTP 不记录用户状态,Cookie 在客户端存凭证、Session 在服务端存数据
计算机网络·cookie·session·http协议
Dwzun1 天前
基于SpringBoot3+Vue3的油莎豆种植管理系统
java·前端·vue.js·spring boot·后端·python·计算机网络
lazy H2 天前
【计算机网络】第 13 篇:NAT 和端口映射是什么?为什么本地服务外网访问不了?
java·网络·网络协议·学习·计算机网络·408