【计算机网络】 粘包问题

文章目录

为什么会产生粘包问题?

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;
相关推荐
阿慧今天瘦了嘛14 小时前
计算机组成原理概述:从硬件到软件的桥梁
计算机网络·算法
Flandern11111 天前
HTTPS(TLS 1.3)完整流程
数据库·网络协议·计算机网络·https
沐苏瑶1 天前
计算机网络核心笔记:打通 TCP/UDP 与 HTTP/HTTPS 底层逻辑(重点上)
笔记·计算机网络·http·https
ZJH__GO2 天前
网络编程v2--多客户端互通
java·运维·服务器·开发语言·计算机网络
Tsuki_tl2 天前
吃透 TCP:可靠传输完整原理【上】
网络协议·tcp/ip·计算机网络·三次握手·后端面试·四次挥手·传输层
shiyi.十一3 天前
第2章:应用层 — 知识要点与架构
网络·计算机网络·架构
sbjdhjd3 天前
SQL 注入零基础详解:原理、手工注入流程与 Sqli-Labs 靶场实战1~5关和第9关思路
数据库·sql·计算机网络·web安全·网络安全·网络攻击模型·安全架构
2501_916008895 天前
HTTPS 抓包遇到证书绑定怎么办,使用 TraceEagle 解除 App 证书校验
网络协议·计算机网络·http·网络安全·ios·adb·https
zx1154505 天前
前后端开发必备的计算机网络知识
计算机网络
砚凝霜6 天前
软考网络工程师|第 1 章 计算机网络基础 完整备考笔记
网络·笔记·计算机网络