# 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 实现中。