CNode

node net模块接收tcp数据 导致了 数据混合在一起了

问答
II-find-you11发布于7 年前最后回复7 年前6 回复4422 浏览0 收藏

用node开启了一个tcp的服务端。在接收数据的时候,连续发了两条命令给客户端,客户端返回两条的时候,服务端接收到的两条命令被合并了。 1561190511(1).jpg image.png

查看回复

回复 (6)

A
athlan20#1·7 年前

socket粘包问题?

T
tangchi695#2·7 年前

自己定义协议拆包

R
rainstraw#3·7 年前

最简单的做法,四个字节长度+一个协议包

R
royalrover#4·7 年前

基于TCP自定通信协议吧,最常用就是 header(body.length)+body

R
royalrover#5·7 年前

https://cnodejs.org/topic/58c2a8f9e0cfa8974a26118f 不过已经有类似的工具了

H
HobaiRiku#6·7 年前

首先tcp避免粘包混乱,除非是客户端和服务端采用断连接的机制,必须,注意是必须定义最起码有长度标志的协议。然后强烈建议不要使用5楼的包,我已经尝试过了,并不是很好用,然后强烈推荐使用transform-stream类来做这个事情,非常简单,而且可以高度自定义。

参与回复
登录后即可参与回复。登录