Netty编码解码,粘包拆包,心跳机制分析

1.Netty编码解码

ChannelPipeline相当一个管道,里面可以放各种容器,包括ChannelOutboundHandler,ChannelInboundHandler方向可以是tail->head,

也可以是head->tail,和过滤器模式一样,一级一级调用符合条件的。

字符串编码器包括:StringEncoder,StringDecoder

对象编码器包括: ObjectEncoder,ObjectDecoder

高效编码器解码器: protobuf

2.Netty粘包拆包

由于tcp是一个基于流的协议,所以二进制数据没有界限,由于tcp作为传输层并不了解业务数据的含义,可能会根据缓冲区的实际情况进行数据包的划分,所以在业务上认为是一个完整的包,可能会被拆分成多个包进行发送,这就是所谓的拆包,,也有可能拆分的时候把剩余部分的包和另外一个包组合成一个新的包,这就是所谓的粘包

解决办法:1.在每个发送的消息上加上一个特殊字符来区分这是一个独立的消息,

DelimiterBasedFrameDecoder,

2.把要发送的消息计算出长度,然后把长度和消息组装成一个新的对象发送到服务器,服务器直接解析对象。

3.Netty心跳检测机制

IdleStateHandler:底层通过读超时判断当前时间和设定的时间是否有连接,如果有的话则进入定时任务继续轮训,如果没有的话那么底层会自定义的处理器,重写userEventTriggered来进行超时,空闲的处理,

4.Netty断线自动重连

1.客户端启动,但是由于网络的原因导致客户端连接失败,可以进行重连

2.客户端启动,但是服务器没有启动,当服务器启动,可以进行重连

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值