【计算机网络】 粘包问题

文章目录

为什么会产生粘包问题?

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;
相关推荐
Ar呐1 天前
软考网规篇之局域网——VLAN技术、城域以太网和以太环网
网络·计算机网络
梁辰兴1 天前
计算机网络基础:传输层的两个主要协议
网络·计算机网络·计算机·协议·传输层·计算机网络基础·梁辰兴
养军博客1 天前
江苏省计算机大类专转本全面知识点
计算机网络·云计算·媒体·量子计算
CS创新实验室1 天前
《计算机网络》深入学:以太网交换机原理与应用
服务器·网络·计算机网络·以太网·以太交换机
柯西极限存在准则1 天前
第四章 计算机网络
计算机网络·系统架构
CS创新实验室1 天前
《计算机网络》深入学:广域网
服务器·网络·计算机网络·408·计算机考研·广域网
小李独爱秋1 天前
计算机网络经典问题透视:EF PHB与AF PHB深度解析——它们有何不同,各适用于何种通信量?
网络·计算机网络·信息与通信·qos·phb
迎仔1 天前
计算机网络分层模型通俗指南 (OSI vs TCP/IP)
网络协议·tcp/ip·计算机网络
小李独爱秋1 天前
计算机网络经典问题透视:怎样才能在自己的计算机中看见周围无线局域网的SSID?
服务器·计算机网络·信息与通信·无线网络·ssid
Tandy12356_2 天前
手写TCP/IP协议栈——HTTP协议实现(完结篇)
c语言·网络·网络协议·tcp/ip·计算机网络·http