为了账号安全,请及时绑定邮箱和手机立即绑定

使用netty通信会把两个间隔很短的数据帧合并成一个数据帧?

使用netty通信会把两个间隔很短的数据帧合并成一个数据帧?

qq_遁去的一_1 2019-01-18 17:46:03
比如我用netty写服务端, 用简单的Socket来模拟客户端,像这样来向服务端发数据: bos.write(data); bos.flush(); 这样就存在一个问题, 当客户端两次发送数据的时间间隔很短时, netty的channelRead(ChannelHandlerContext ctx, Object msg)方法获取到的msg里就可能会同时含有客户端的两次数据, 这样服务端在解析数据时就会出现问题. 想知道为什么会出现合并数据帧的问题, 以及该怎样去解决?
查看完整描述

2 回答

?
德玛西亚99

TA贡献1770条经验 获得超3个赞

channel本来就是非阻塞的,所以获取到的并不是完全实时的数据,可能会有延迟,所以两次发送的数据服务端一次接收本身就是正常的。

关键的是,你不应该以“帧”来分隔数据,而应该自己约定一种分割方法。比如每一个数据都附带一个length,或者以若干个特殊的字节来作为分隔符,等。

查看完整回答
反对 回复 2019-03-01
?
小怪兽爱吃肉

TA贡献1852条经验 获得超1个赞

netty粘包拆包

查看完整回答
反对 回复 2019-03-01
  • 2 回答
  • 0 关注
  • 795 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信