node net模块接收tcp数据 导致了 数据混合在一起了
用node开启了一个tcp的服务端。在接收数据的时候,连续发了两条命令给客户端,客户端返回两条的时候,服务端接收到的两条命令被合并了。
6 回复
socket粘包问题?
自己定义协议拆包
最简单的做法,四个字节长度+一个协议包
基于TCP自定通信协议吧,最常用就是 header(body.length)+body
首先tcp避免粘包混乱,除非是客户端和服务端采用断连接的机制,必须,注意是必须定义最起码有长度标志的协议。然后强烈建议不要使用5楼的包,我已经尝试过了,并不是很好用,然后强烈推荐使用transform-stream类来做这个事情,非常简单,而且可以高度自定义。