【计算机网络】 粘包问题

文章目录

为什么会产生粘包问题?

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;
相关推荐
你怎么知道我是队长3 小时前
计算机网络入门指南:从OSI模型到网络设备
网络·计算机网络
编程之路,妙趣横生2 天前
IP 协议
计算机网络
笨鸟先飞,勤能补拙2 天前
Web 服务器与计算机网络全景原理
运维·服务器·前端·网络·人工智能·计算机网络·web安全
拾光Ծ2 天前
【Linux网络】数据链路层详解:以太帧与ARP协议 + 代理服务器与内网穿透,内网打洞
计算机网络·内网穿透·数据链路层·arp·代理服务器·内网打洞·以太帧
JZZC22 天前
38.IPv6——静态配置
计算机网络·ipv6
ly76893 天前
计算机网络:从分层模型到 TCP/IP、HTTP 与网络排查
网络·tcp/ip·计算机网络
我爱cope3 天前
【计算机网络 | 物理层5:时分复用、频分复用与波分复用:一条链路如何服务多个用户?】
网络·学习·计算机网络
上岸社社长4 天前
2027届国网计算机类备考指南:时间线、考纲与复习规划(附资料)
计算机网络
四代水门4 天前
三、计算机网络
服务器·计算机网络·asp.net
hxhy005 天前
计算机网络
计算机网络