node.js tcp 粘包,拆包问题
发布于 5 年前 作者 JerrysShan 6234 次浏览 来自 问答

最近在学习socket编程,遇到tcp粘包的问题,查了资料,大致看到两种封包思路:

  1. 一种是把body length放在header里面,先解析body length,然后再解析body.
  2. 另外一种是根据特殊字符,如\r\n来切分 看到说的都是这种思路,但是没有查到具体的实现方案,有谁能具体的例子学习一下吗?
4 回复

粘包的术语是生造出来不正确的。 实际场景是需要你自行定义(设计)数据流解析方式(比如用 \r\n 作终止符)

楼上说得非常到位,数据流协议和处理必须自己根据需求制定,没有协议的数据流是不科学的。推荐看看变形流stream.Transform 类,比如zlib,crypto包。你需要的不是on('data', data =>{}),而是on('frame',frame =>{})。根据\r\n分割,可以了解readline

@waitingsong 多谢,通过自己实践,慢慢理解了

回到顶部