netty版本
- netty版本:
io.netty:netty-all:4.1.33.Final
server端代码
启动代码
-
启动主流程代码分析
public class EchoServer { private final int port; public EchoServer(int port) { this.port = port; } public void start() throws Exception { //使用NIO事件循环组来接受和处理新的连接, OIO可以使用OioEventLoopGroup() NioEventLoopGroup group = new NioEventLoopGroup(); try { //ServerBootstrap 是一个启动NIO服务的辅助启动类 你可以在这个服务中直接使用Channel ServerBootstrap b = new ServerBootstrap(); //#1 //这一步是必须的,如果没有设置group将会报java.lang.IllegalStateException: group not set异常 b.group(group) //#2 //指定NIO传输类型 .channel(NioServerSocketChannel.class) //#2 //本地套接字地址 .localAddress(new InetSocketAddress(port)) //#2 //把处理器加入到channel pipeline .childHandler(new ChannelInitializer<SocketChannel>() { //#3 //每个连接上一个连接调用一次 @Override public void initChannel(SocketChannel ch) throws Exception { //设置childHandler执行所有的连接请求 ch.pipeline().addLast(new EchoServerHandler()); //#4 } }); //异步绑定服务器,sync()方法的调用将引起这个阻塞,直到服务器绑定完成. ChannelFuture f = b.bind().sync(); //#5 System.out.println(EchoServer.class.getName() +

本文详细分析了Netty的客户端和服务端代码。首先介绍了Netty的版本,接着讲解了服务端的启动代码,包括事件循环组的创建和服务器端口的绑定。然后阐述了服务端Handler的职责,特别是其入站数据处理和异常处理。客户端部分,讨论了Bootstrap的配置,如通道类型、通道选项和属性设置,以及客户端Handler如何处理接收到的数据。最后强调了ByteBuf的使用以及消息的释放策略。
最低0.47元/天 解锁文章
2921





