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() +