【计算机网络】 粘包问题

文章目录

为什么会产生粘包问题?

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;
相关推荐
散修-小胖子1 小时前
计算机网络基础概念
计算机网络
没书读了2 小时前
考研复习-计算机网络-第六章-应用层
计算机网络·考研
君鼎2 小时前
计算机网络第二章:物理层学习总结
网络·学习·计算机网络
Tandy12356_3 小时前
中科大计算机网络——网络安全
c语言·python·计算机网络·安全·web安全
重生之我是Java开发战士3 小时前
【计算机网路】计算机网络概述:从 ARPAnet 到万物互联
计算机网络
Han.miracle16 小时前
JavaEE-- 网络编程 http请求报头
运维·服务器·网络·网络协议·计算机网络·http
Han.miracle19 小时前
JavaEE--网络编程 http请求 :URL 方法get 和 post
数据库·sql·计算机网络
不染尘.21 小时前
计算机网络评价指标和封包解包
服务器·网络·计算机网络
cccyi71 天前
传输层协议:UDP 与 TCP 原理详解
计算机网络·udp·tcp
元亓亓亓1 天前
考研408--计算机网络--day5--介质访问控制&令牌传递协议
计算机网络·信道划分·随机访问