• 首页
  • 云服务器
  • 物理服务器
  • 跨境电商
  • 知识库
  • 保障
    信任中心 >>
    • 基础设施与网络
    • 服务保障能力
    • 数据安全
    • 合规资质
    数据中心 >>
    • 中国洛阳国际数据中心
    • 中国香港多线数据中心
    VIP会员服务 >>
    • 7*24小时服务支持
    • 0元快速备案
    • 100倍故障赔偿
    • 5天无理由退款
会员登录 免费注册

帮助中心 / Netty粘包问题的解决方法

Netty粘包问题的解决方法



来源:辰迅云编辑:chenxun时间:2021/8/8 21:46:51



本篇内容主要讲解“Netty粘包问题的解决方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Netty粘包问题的解决方法”吧!

我们知道,netty当中有boss线程和worker线程,通常是1对多的关系,可以理解为boss接到客户的请求之后,分配给其中一个worker去处理,如果客户过多,可能会出现一个worker服务多个客户的情况。这是背景。

按照我的理解,粘包问题解决的关键在于2点,1、接收到数据在无法得到及时解析的情况下,得有地方给它存下来;2、缓冲区指针的任意移动;恰好,这两点netty都能够很轻易的。下面是代码,因为公司的保密需求,将会隐去具体业务部分。

public class ProtocolAnaDecoder extends ByteToMessageDecoder {

    @Override

    protected void decode(ChannelHandlerContext ctx, ByteBuf in, Listout) throws Exception {         Object decoded = null;

        while(true){

            decoded = decode(ctx, in);

             if (decoded != null) {

                out.add(decoded);

            } else{

                return;

            }

        }

    }

    private Object decode(ChannelHandlerContext ctx, ByteBuf in) {

        //标记当前读指针位置

        in.markReaderIndex();

        while(in.isReadable()){

            byte b = in.readByte();

            //业务处理部分,如果获得一个正确的消息对象,直接返回

        }

        //如果没有得到任何消息对象,重置读指针位置(之前mark的位置)。         in.resetReaderIndex();

        return null;

    }

}

到此,相信大家对“Netty粘包问题的解决方法”有了更深的了解,不妨来实际操作一番吧!这里是辰讯云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!











    帮助中心

  • 云服务器类
  • 域名类
  • 虚拟主机类
  • 独立服务器
  • 付款类
  • 其他类

现在注册,即刻为您提供最佳上云实践机会

立即注册
辰迅云

400-0666-318 (7*24小时热线)

Copyright 2013 - chenxunyun.com. All RightsReserved. 辰迅云 版权所有
  • 关于辰迅云

    关于我们 发展历程 资质荣誉 新闻公告 诚聘英才 联系我们
  • 辰迅云产品

    云服务器 服务器托管 服务器租用
  • 服务与支持

    域名知识 云服务器问题 SSL证书问题 虚拟主机问题 租用托管 网站备案问题
  • 知识库

    云计算 编程语言 网络安全 智能运维 大数据 深度学习
  • 快速通道

    独立控制面板 忘记密码
乐创云
  • 工信部备案号沪ICP备20007084号
  • 《中华人民共和国增值电信业务经营许可证》编号: B1-20194590号

在线客服

电话咨询

微信客服