-
一个以为发一次就收一次的 TCP 通信程序,在高频发送时把多条消息粘成了一坨、又把一条拆成了两半:一次 TCP 粘包拆包的深度复盘
基于 TCP 自研的设备协议,平时好好的,一到高频上报服务端就疯狂报 JSON 解析失败——有时一次收到两三条消息粘在一起、有时只收到半条。抓包看设备发得一条是一条,根因是把 TCP 当成了消息流:TCP 是面向字节流的,只保证字节有序可靠到达、不维护消息边界,会为效率合并小包或按 MSS 拆大包,send 与 recv 次数根本不对应,而协议里没有任何消息边界设计。本文讲透 TCP 为何必然粘包…- 0
- 0
-
我发了两条消息,服务端却收成了一条半:第一次手写 TCP 通信被粘包拆包教做人,才真正理解 TCP 是字节流而非一条条的消息流
第一次抛开 HTTP 框架、用裸 TCP socket 写通信:客户端分两次 send("HELLO")、send("WORLD"),服务端却时而收成粘在一起的 "HELLOWORLD",时而把一条劈成两半。根因是我把 TCP 当成了消息流——可它是字节流,send 之间的边界一进流就消失了。这篇从字节流原理讲到长度前缀/分隔符分帧、re…- 3
- 0
粘包拆包
幸运之星正在降临...
点击领取今天的签到奖励!
恭喜!您今天获得了{{mission.data.mission.credit}}积分
我的优惠劵
-
¥优惠劵使用时效:无法使用使用时效:
之前
使用时效:永久有效优惠劵ID:×
没有优惠劵可用!


