-
我想当然地以为 TCP 发一次就能收一次,结果客户端发来的消息要么粘成一坨、要么被截成两半,我对着错乱的数据排查了好几天才搞懂粘包半包的深度复盘
我做长连接服务,用 TCP 传自定义消息,设计得"很自然":客户端 send 一条,服务端 recv 一条。本地小数据量一切正常,可一旦快速连续发、或消息体一大,服务端就疯狂解析失败:有时一次 recv 收到几条粘在一起的消息({"a":1}{"b":2}{"c":3}),有时一条消息被截成两半。翻了 TCP 原理才懂…- 0
- 0
-
我发了两条消息,服务端却收成了一条半:第一次手写 TCP 通信被粘包拆包教做人,才真正理解 TCP 是字节流而非一条条的消息流
第一次抛开 HTTP 框架、用裸 TCP socket 写通信:客户端分两次 send("HELLO")、send("WORLD"),服务端却时而收成粘在一起的 "HELLOWORLD",时而把一条劈成两半。根因是我把 TCP 当成了消息流——可它是字节流,send 之间的边界一进流就消失了。这篇从字节流原理讲到长度前缀/分隔符分帧、re…- 3
- 0
字节流
幸运之星正在降临...
点击领取今天的签到奖励!
恭喜!您今天获得了{{mission.data.mission.credit}}积分
我的优惠劵
-
¥优惠劵使用时效:无法使用使用时效:
之前
使用时效:永久有效优惠劵ID:×
没有优惠劵可用!


