【计算机网络】 粘包问题

文章目录

为什么会产生粘包问题?

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;
相关推荐
Sagittarius_A*8 小时前
H3CSE 高性能园区网:Smart Link 与 Monitor Link 技术详解
网络·计算机网络·h3cse
Python-AI Xenon11 小时前
双网卡双网关服务器策略路由配置与持久化完全指南
linux·运维·计算机网络·网络故障排查
绝知此事11 小时前
【计算机网络系列 2/3】HTTP协议深度解析:从HTTP1.0到HTTP3.0的演进之路
网络协议·计算机网络·http
绝知此事12 小时前
【计算机网络系列 3/3】网络安全与性能优化:HTTPS、WebSocket、负载均衡实战
计算机网络·web安全·性能优化
绝知此事12 小时前
【计算机网络系列 1/3】网络基础与TCP协议:从生活场景理解三次握手
网络·tcp/ip·计算机网络
长谷深风11113 小时前
从输入URL到网页显示的全过程解析【个人八股】
计算机网络·url 访问流程·dns 域名解析·tcp 连接·根域名服务器·常用端口号·网络分层架构
切糕师学AI1 天前
深入理解 DNS:互联网的“电话簿”是如何工作的?
计算机网络·dns
切糕师学AI1 天前
计算机网络中的 TTL:从 IP 到 DNS 的全面解析
tcp/ip·计算机网络·dns·ttl
lalala_Zou1 天前
计算机网络高频面试总结
计算机网络·面试·职场和发展
Zik----2 天前
计算机网络期末复习
计算机网络·研究生面试·计算机专业期末