node.js tcp 粘包,拆包问题
最近在学习socket编程,遇到tcp粘包的问题,查了资料,大致看到两种封包思路:
- 一种是把body length放在header里面,先解析body length,然后再解析body.
- 另外一种是根据特殊字符,如\r\n来切分 看到说的都是这种思路,但是没有查到具体的实现方案,有谁能具体的例子学习一下吗?
4 回复
粘包的术语是生造出来不正确的。 实际场景是需要你自行定义(设计)数据流解析方式(比如用 \r\n 作终止符)
楼上说得非常到位,数据流协议和处理必须自己根据需求制定,没有协议的数据流是不科学
的。推荐看看变形流stream.Transform 类
,比如zlib,crypto包。你需要的不是on('data', data =>{})
,而是on('frame',frame =>{})
。根据\r\n
分割,可以了解readline
@waitingsong 多谢,通过自己实践,慢慢理解了