【计算机网络】 粘包问题

文章目录

为什么会产生粘包问题?

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;
相关推荐
2401_8685347816 小时前
系统分析师案例分析题常考知识点
python·计算机网络
从零开始的代码生活_2 天前
Linux epoll 多路转接详解
linux·运维·网络·后端·tcp/ip·计算机网络·php
liulilittle3 天前
KCC 拥塞控制算法缺陷修复记录(26/07/05)
网络·tcp/ip·计算机网络·c·信息与通信·tcp·通信
liulilittle3 天前
KCC 边界缺陷深度分析:六问题根源与解决方案
网络·网络协议·tcp/ip·计算机网络·信息与通信·ip·通信
Thomas.Chan3 天前
数据中心动环监控系统架构详解
运维·网络·计算机网络·其他·系统架构·数据中心
2401_868534783 天前
网络规划设计师学习笔记
python·计算机网络
apcipot_rain3 天前
计科八股2026705——正态分布、独立与不相关、范数、列表元组集合、链表队列、sort函数、URL执行
python·计算机网络·概率论
程序员·小李3 天前
计算机网络(1)
计算机网络
Chockmans3 天前
春秋云境CVE-2021-42897(保姆级教学)
计算机网络·安全·web安全·网络安全·安全威胁分析·春秋云境·cve-2021-42897
从零开始的代码生活_3 天前
Linux select 多路转接详解
linux·运维·服务器·网络·网络协议·tcp/ip·计算机网络