【计算机网络】 粘包问题

文章目录

为什么会产生粘包问题?

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;
相关推荐
BOB_BOB_BOB_19 小时前
【ee类保研面试】其他类---计算机网络
计算机网络·面试·职场和发展·保研
摇光932 天前
[复习]计算机网络
网络·计算机网络·国家电网
wen__xvn2 天前
计算机网络1-5:计算机网络的性能指标
网络·计算机网络
wen__xvn2 天前
计算机网络1-4:计算机网络的定义和分类
计算机网络
青衫码上行2 天前
【计算机网络 | 第3篇】物理媒介
计算机网络
丰锋ff3 天前
计算机网络 第2章通信基础(竟成)
计算机网络
千码君20163 天前
计算机网络:一个 IP 地址可以同时属于 A 类、B 类或 C 类吗?
网络协议·tcp/ip·计算机网络·子网划分·子网掩码·多播地址·ip分类
Menior_3 天前
【网络基础】计算机网络发展背景及传输数据过程介绍
网络·计算机网络
希赛网3 天前
希赛《华为 HCIA-Datacom 》核心考点之 NAT 技术解析
运维·服务器·网络·计算机网络·智能路由器·华为认证
千码君20164 天前
计算机网络:如何将一个B类IP地址分为4个子网
网络·tcp/ip·计算机网络·子网掩码·借位计算·子网位·与运算