【计算机网络】 粘包问题

文章目录

为什么会产生粘包问题?

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;
相关推荐
muyeminyu16 分钟前
SDUT计算机网络实验二:交换机的配置
计算机网络·大学生·计网·计网实验·sdut
河北之花2 小时前
计算机三级:交换机VLAN配置
计算机网络
2501_916008895 小时前
全平台抓包工具,Windows、iPhone、Linux三个平台抓包测试
网络协议·计算机网络·网络安全·ios·adb·https·udp
爱学习的程序媛10 小时前
以太网协议详解
网络·网络协议·计算机网络·以太网·ethernet·通信协议
河北之花13 小时前
计算机三级:VLAN虚拟局域网
计算机网络
代码中介商2 天前
DNS 完全指南:从域名解析到实战排查
计算机网络·dns
疯狂打码的少年2 天前
【计算机网络】IPv6基础(特点、表示法、与IPv4对比)
网络·笔记·计算机网络
网安老伯2 天前
都2026年了,还在问网络安全怎么入门?看完这一篇你就懂了
运维·计算机网络·web安全·网络安全·wireshark·密码学·网络攻击模型
河北之花2 天前
计算机三级:BGQ
网络·tcp/ip·计算机网络·智能路由器
疯狂打码的少年3 天前
【计算机网络】网络互连设备(中继器 / 网桥 / 交换机 / 路由器 / 网关)
网络·笔记·计算机网络·智能路由器