【计算机网络】 粘包问题

文章目录

为什么会产生粘包问题?

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;
相关推荐
无限码力4 小时前
华为OD技术面真题 - 计算机网络 - 1
计算机网络·华为od·华为od面试八股文·华为od面试真题
CS创新实验室19 小时前
《计算机网络》深入学:电路交换、报文交换与分组交换
计算机网络·分组交换·电路交换·报文交换
-To be number.wan1 天前
【补漏版】计算机网络期末大题预测合集
网络·计算机网络
CS创新实验室1 天前
《计算机网络》深入学:虚电路
服务器·计算机网络·php·虚电路
Hubianji_091 天前
[SPIE] 2026年计算机网络、通信工程与智能系统国际学术会议 (ISCCN 2026)
大数据·人工智能·计算机网络·国际会议·论文投稿·国际期刊
头疼的程序员1 天前
计算机网络:自顶向下方法(第七版)第二章 学习分享(一)
学习·计算机网络
广州服务器托管1 天前
[2026.1.6]WINPE运维版20260106,带网络功能的PE维护系统
运维·开发语言·windows·计算机网络·个人开发·可信计算技术
-To be number.wan1 天前
两道经典IP子网题解析|掌握CIDR与广播地址的奥秘
网络·网络协议·tcp/ip·计算机网络
BOB-wangbaohai1 天前
软考-系统架构师-计算机网络(二)
计算机网络·软考·系统架构师·网络通信
manuel_897571 天前
五 计算机网络
计算机网络