【计算机网络】 粘包问题

文章目录

为什么会产生粘包问题?

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;
相关推荐
oi..12 小时前
从 0 到 1:文件上传漏洞的校验、绕过与真实场景利用
网络·笔记·计算机网络·安全·web安全·网络安全·xss
小红的布丁1 天前
从浏览器输入 URL 到页面返回:一次互联网通信全过程
计算机网络
551只玄猫1 天前
【计算机网络 实验报告2】网络常用命令与基本配置
网络·计算机网络·wireshark·课程设计·实验报告
Ether IC Verifier1 天前
RDMA协议详细介绍:从原理到未来发展
网络·网络协议·计算机网络·dpu
551只玄猫1 天前
【计算机网络 实验报告3】集线器和交换机的工作原理
计算机网络·交换机·集线器·实验报告·可测和功能设计
早川9191 天前
ICMP基础知识
计算机网络·icmp
小明同学012 天前
计算机网络编程---发展历程、两种协议、封装与分用
网络·计算机网络
菜菜小狗的学习笔记2 天前
八股(五)计算机网络
计算机网络
小红的布丁2 天前
计算机网络入门:OSI 五层模型、各层协议和数据单位
计算机网络
551只玄猫2 天前
【计算机网络 实验报告1】Wireshark软件的使用
计算机网络·测试工具·wireshark·课程设计·实验报告