Netty是一个高性能的Java网络应用程序框架,可以帮助开发人员快速和容易地创建高性能、可靠的网络应用程序。Netty可以帮助开发人员构建强大的网络服务器和客户端应用程序,以便更容易地交换数据。Netty提供了一系列的功能,例如:支持多种协议,提供强大的编解码器,支持异步和同步请求处理以及一系列的可靠性机制。
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-all</artifactId>
<version>4.1.39.Final</version>
</dependency>
public class HelloServer {
public static void main(String[] args) {
// 1. 启动器
new ServerBootstrap()
// 2. 添加处理器组
.group(new NioEventLoopGroup())
// 3. 选择服务器的ServerSocketChannel的实现
.channel(NioServerSocketChannel.class)
// 4. 每个Channel的处理
.childHandler(
new ChannelInitializer<NioSocketChannel>() {
// 5. 子处理器的初始化
@Override
protected void initChannel(NioSocketChannel ch) throws Exception {
ch.pipeline().addLast(new StringDecoder());
ch.pipeline().addLast(new ChannelInboundHandlerAdapter() {
@Override
public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
System.out.println(msg);
}
});
}
}
)
.bind(8080);
}
}
线程池+Selector
NIO的实现
Channel的处理方式
具体的处理器
业务工作流
public class HelloClient {
public static void main(String[] args) throws InterruptedException, IOException {
// 创建客户端
ChannelFuture client = new Bootstrap()
.group(new NioEventLoopGroup())
.channel(NioSocketChannel.class)
.handler(new ChannelInitializer<NioSocketChannel>() {
@Override
protected void initChannel(NioSocketChannel ch) throws Exception {
ch.pipeline().addLast(new StringEncoder());
}
})
.connect(new InetSocketAddress("localhost", 8080))
.sync();
// 发送数据
Channel channel = client.channel();
channel.writeAndFlush("hello world");
System.in.read();
}
}
线程池+Selector
NIO的实现
业务处理器
进行连接