【计算机网络】 粘包问题

文章目录

为什么会产生粘包问题?

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;
相关推荐
阑梦清川42 分钟前
计算机网络--后退N帧协议和选择重传协议
计算机网络
Henry Zhu1232 小时前
VPP中ACL实战配置指南与VPP的API使用初探
运维·服务器·网络·计算机网络·云原生
不染尘.3 小时前
超网和路由概述
网络·计算机网络
web3.08889993 小时前
震坤行商品详情数据接口可以用于获取商品详情信息
python·计算机网络
秋刀鱼 ..6 小时前
2026生物神经网络与智能优化国际研讨会(BNNIO 2026)
大数据·python·计算机网络·数学建模·制造
JZZC221 小时前
1.端口隔离——L2
计算机网络·ensp·端口隔离
Henry Zhu1231 天前
VPP中的DPDK插件源码详解第一篇:DPDK插件的作用和意义以及整体架构
运维·服务器·网络·计算机网络·云原生
秋刀鱼 ..1 天前
第三届教育发展与社会科学国际学术会议 (EDSS 2026)
大数据·python·计算机网络·数学建模·制造
会议秘书白老师1 天前
2026年物联网、计算机网络与智能计算国际会议(ITCNIC 2026)
物联网·计算机网络
阑梦清川1 天前
计算机网络--关于域名服务器的访问顺序
运维·服务器·计算机网络