Netty源码分析之自定义编解码器

Java55

在日常的网络开发当中,协议解析都是必须的工作内容,Netty中虽然内置了基于长度、分隔符的编解码器,但在大部分场景中我们使用的都是自定义协议,所以Netty提供了 MessageToByteEncoder 与 ByteToMessageDecoder 两个抽象类,通过继承重写其中的encode与decode方法实现私有协议的编解码。这篇文章我们就对Netty中的自定义编解码器进行实践与分析。

一、编解码器的使用

下面是MessageToByteEncoder与ByteToMessageDecoder使用的简单示例,其中不涉及具体的协议编解码。

创建一个sever端服务

```
EventLoopGroup bossGroup = new NioEventLoopGroup(1);
EventLoopGroup workerGroup = new NioEventLoopGroup();
final CodecHandler codecHandler = new CodecHandler();
try {
ServerBootstrap b = new ServerBootstrap();
b.group(bossGroup, workerGroup).channel(NioServerSocketChannel.class).option(ChannelOption.SO_BACKLOG, 100)
.handler(new LoggingHandler(LogLevel.INFO)).childHandler(new ChannelInitializer() {
@Override
public void initChannel(SocketChannel ch) throws Exception {
ChannelPipeline p = ch.pipeline();
if (sslCtx != null) {

输入验证码查看隐藏内容

扫描二维码关注本站微信公众号 Johngo学长
或者在微信里搜索 Johngo学长
回复 svip 获取验证码
wechat Johngo学长

相关文章
maven基础入门 Java

maven基础入门

maven翻译为"专家","内行"。Maven是Apache下的一个纯java开发的开源项目,它是一个项目管理工具,使用maven对java项目进行构建、依赖管理。当前使用Maven的项目在持续增长。...
Java(13)方法参数 Java

Java(13)方法参数

首先回顾一下在程序设计语言中关于如何将参数传递给方法的一些专业术语。 按值调用表示方法接收的是调用者提供的值。而...
匿名内部类的使用 Java

匿名内部类的使用

原始做法: ```java /* * 创建时间: 2022/4/30 * * @author 尼古拉斯.Cai灯 / public class BasicClass { public static v...
Fizz网关入门教程-快速聚合多接口 Java

Fizz网关入门教程-快速聚合多接口

背景介绍 先看一张图,页面一共调用了20多个后端接口,页面出现了明显的卡顿,而且每6个请求一组,只有前一组返回后才执行下一组。看到请求是pending状态,很容易以为是后端接口的问题,有经验的同学可能...
设计模式之策略模式 Java

设计模式之策略模式

在收银系统中,如果普通用户、中级会员和高级会员对应不同的优惠策略,常规编程需要使用一系列判断语句来判断用户类型,在这种情况下可以使用策略模式。[En]In a cashier system, if o...
从零玩转第三方登录之QQ登录 Java

从零玩转第三方登录之QQ登录

从零玩转第三方登录之QQ登录 前言 在实际连接之前,让我们谈谈后台方案设计。由于它连接到第三方登录,因此保存用户信息是不可避免的。首先需要明确用户成功登录第三方后,[En]Before the act...
SSM简单整合!!! Java

SSM简单整合!!!

3. 在maven中添加依赖 ```xml org.mybatis mybatis-spring 2.0.7 org.springframework spring-jdbc 5.3.2 org.myb...
使用 Hexo 搭建个人独立博客 Java

使用 Hexo 搭建个人独立博客

一.前言 一直在博客园写博客,已经写了几年了,博客园也挺好用的,用户多,阅读文章的也多,互动也多。但是自己总有一个想搭建一个独立博客的想法,作为一个 Coder,当然是想自己写,最终由于拖延症始终没写...
M1 MAC 装ubuntu更换镜像源 Java

M1 MAC 装ubuntu更换镜像源

记录一下今天突发奇想装个ubuntu遇到问题 w镜像源:更换镜像源网上教程基本对的,但要注意机型(ps:m1 mac) 补:很多时候是对问题理解不到位,比如我直接搜索arm ubuntu镜像源 认识有...
架构设计之设计模式总结 Java

架构设计之设计模式总结

在实际的项目开发中,我们经常使用设计模式。设计模式能否正确、合理、灵活地应用到项目中,是判断您开发能力的重要指标之一。一方面,您需要为编程打下坚实的基础,另一方面,需要积累大量的项目经验。这个过程不是...