c/c++高频面试:TCP粘包三种解决方案
1. 消息定长 (Fixed-Length Messages)原理发送端和接收端约定每一个消息的长度都是固定的比如 1024 字节。实现如果发送的数据不足 1024 字节就用空格或\0补齐接收端每次严格读取 1024 字节算作一个完整的消息。优点极其简单不需要复杂的解析逻辑。缺点严重浪费网络带宽。如果你的应用大部分时候只发送几个字节的短消息强行补齐到 1024 字节会导致网络吞吐量大打折扣。适用场景只在非常特定的硬件交互或定长指令集场景中使用。2. 特殊字符分隔符 (Delimiter-Based)原理在每个完整的消息末尾附加一个约定的特殊字符或字符串作为边界标识。最经典的就是\n或\r\n。实现接收端将接收到的流数据缓存起来不断扫描缓存直到发现约定的分隔符就把分隔符之前的数据截取出来当作一个完整消息。优点空间利用率高没有长度限制。缺点不适合传输二进制数据比如图片、音视频、序列化后的 protobuf 数据。因为二进制数据内部大概率会随机出现你约定的“分隔符”导致消息被错误截断。如果非要传就必须对数据体内部的“分隔符”做转义非常麻烦。适用场景文本协议如 HTTP 请求头、FTP、Redis 文本协议。3. 包头加包体长度 (Length-Prefixed / TLV 结构) ——工业界最标准解法原理将消息分为 Header头部和 Body包体。在固定长度的 Header 中专门拿出一个字段来存储后续 Body 的真实字节长度。这就是著名的TLV (Type-Length-Value)结构。实现流转重点面试官最爱听的拆解步骤接收端先固定读取 Header 的长度比如固定的 4 字节整数。将这 4 个字节解析成整数 $L$得知接下来马上要到来的包体有 $L$ 字节。接收端继续在缓存中读取确切的 $L$ 字节数据。读满 $L$ 字节后一个完整的消息就拼装成功了。优点完美解决二进制数据的传输问题精确高效是现代网络通信的标配。缺点实现相对复杂需要维护接收状态机当前是在读头部还是在读包体。适用场景绝大多数自定义 RPC 协议、游戏后端、IM 聊天软件。

相关新闻

低产油井抽油机电气控制系统设计

低产油井抽油机电气控制系统设计

低产油井抽油机电气控制系统设计 第一章 绪论 低产油井在我国油田存量中占比较高,传统抽油机多采用恒速连续运行模式,容易出现空抽、液击、电能浪费严重、设备磨损大等问题,难以与地层供液能力匹配。为提高抽油效率、降低能耗、延长设备使用寿…

2026/7/3 10:41:18 阅读更多 →
基于模拟退火优化的BP神经网络SA-BP回归预测与分类时序预测模型——MATLAB平台实现及中...

基于模拟退火优化的BP神经网络SA-BP回归预测与分类时序预测模型——MATLAB平台实现及中...

SA-BP回归预测,基于模拟退火算法优化BP神经网络的数据回归预测 需要分类和时序预测也有可更换 实现平台:MATLAB 中文注释清楚 其中main为运行主程序,按照示例数据修改格式,替换数据集即可运行。 很方便,容易上手。这…

2026/7/5 12:48:12 阅读更多 →
DeepSeek助力数字孪生落地:贴合年度趋势的场景建模与数据联动技巧

DeepSeek助力数字孪生落地:贴合年度趋势的场景建模与数据联动技巧

DeepSeek助力数字孪生落地:贴合年度趋势的场景建模与数据联动技巧引言数字孪生作为一种前沿技术,正迅速改变各行各业。它通过创建物理实体的虚拟副本,实现实时监控、预测分析和优化决策。随着人工智能和大数据技术的飞速发展,数字…

2026/5/17 9:22:58 阅读更多 →

最新新闻

ComfyUI-KJNodes:重构AI工作流架构的模块化扩展方案

ComfyUI-KJNodes:重构AI工作流架构的模块化扩展方案

ComfyUI-KJNodes:重构AI工作流架构的模块化扩展方案 【免费下载链接】ComfyUI-KJNodes Various custom nodes for ComfyUI 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-KJNodes 在AI图像生成和视频处理的复杂工作流中,ComfyUI已成为事实…

2026/7/5 20:16:18 阅读更多 →
5分钟快速部署:Python大麦网自动抢票脚本完整指南

5分钟快速部署:Python大麦网自动抢票脚本完整指南

5分钟快速部署:Python大麦网自动抢票脚本完整指南 【免费下载链接】Automatic_ticket_purchase 大麦网抢票脚本 项目地址: https://gitcode.com/GitHub_Trending/au/Automatic_ticket_purchase 还在为抢不到热门演唱会门票而烦恼吗?每次开票瞬间售…

2026/7/5 20:12:17 阅读更多 →
基于混沌系统与DNA编码的图像加密算法原理与Matlab实现

基于混沌系统与DNA编码的图像加密算法原理与Matlab实现

1. 项目概述:当混沌遇上DNA,图像加密的新思路最近在复现和优化一些经典的图像加密算法,发现将Logistic映射和Chen超混沌系统结合起来,再引入DNA分块编码,是一条非常有意思的技术路线。这不仅仅是两个混沌系统的简单堆叠…

2026/7/5 20:08:17 阅读更多 →
LaTeX-Workshop环境变量深度解析:高级配置与性能优化实战

LaTeX-Workshop环境变量深度解析:高级配置与性能优化实战

LaTeX-Workshop环境变量深度解析:高级配置与性能优化实战 【免费下载链接】LaTeX-Workshop Boost LaTeX typesetting efficiency with preview, compile, autocomplete, colorize, and more. 项目地址: https://gitcode.com/gh_mirrors/la/LaTeX-Workshop 作…

2026/7/5 20:04:16 阅读更多 →
CANN特征向量检索指南

CANN特征向量检索指南

特征向量检索(FV) 【免费下载链接】docs 该仓库用于维护cann公共文档 项目地址: https://gitcode.com/cann/docs 基本原理 该部分主要实现了对特征检索的功能验证,生成随机底库,随机生成特征数据进行特征检索(…

2026/7/5 20:04:16 阅读更多 →
5个核心场景解锁:NBTExplorer可视化编辑器让Minecraft数据编辑变得如此简单

5个核心场景解锁:NBTExplorer可视化编辑器让Minecraft数据编辑变得如此简单

5个核心场景解锁:NBTExplorer可视化编辑器让Minecraft数据编辑变得如此简单 【免费下载链接】NBTExplorer A graphical NBT editor for all Minecraft NBT data sources 项目地址: https://gitcode.com/gh_mirrors/nb/NBTExplorer 你是否曾经因为看不懂Minec…

2026/7/5 19:58:15 阅读更多 →

日新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

月新闻