# Netty实战

# 核心

缓冲(buffer)

通道(channel)

事件模型(event model)

# 1.服务端

# 1.1服务端启动

需要启动类(BootStrap)和处理业务的代码(ChannelHandler)


1
  • 新建NioEventLoopGroup类型的bossGroup和group。bossGroup主要处理服务端接收客户端连接处理,group主要处理读写等I/O事件及任务等;
  • 创建ServerBootstrap,其主要对一些处理进行代理,如bind()等操作,其是其他类的一个简单门面;
  • channel()方法设置服务端的ServerSocketChannel实现类,本处实现类为NioServerSocketChannel。
  • option()方法设置Channel的相关选项,具体查看ChannelOption中的定义;
  • localAddress()设置服务端绑定的本地地址及端口;
  • handler()设置服务端的对应Channel的Handler;
  • childHandler()设置子连接的Channel的Handler;
  • bind()及sync()绑定本地地址并同步返回绑定结果;

在TCP/IP中,Netty 会把读到的数据放到 ByteBuf 的数据结构中。

# 1.2客户端启动


1

# 1.3区别

编写服务端和客户端最大的并且唯一不同的使用了不同的BootStrap (opens new window)Channel (opens new window)的实现

# Google Protocol Buffer 整合

Google Protocol Buffers (opens new window) 是快速实现一个高效的二进制协议的理想方案。通过使用 ProtobufEncoder (opens new window)ProtobufDecoder (opens new window),你可以把 Google Protocol Buffers 编译器 (protoc) 生成的消息类放入到 Netty 的codec 实现中。