ServerBootstrap的方法 handler与childHandler的异同
- 方法来源不同 ,ServerBootstrap#handler来源于父类AbstractBootstrap。childHandler是ServerBootstrap自身的方法。
- 配置要求不同,ServerBootstrap#handler可以不配置,#childHandler必须配置,否则抛出异常
IllegalStateException: childHandler not set
。 - 使用方式不同,ServerBootstrap#handler 对应的的Channel是
io.netty.channel.socket.ServerSocketChannel
的实例(即AbstractBootstrap#channel 配置的Channel Class),ServerBootstrap#childHandler对应的Channel是io.netty.channel.socket.SocketChannel
实例。换而言之,ServerBootstrap#handler设置的ChannelHandler是被添加到ServerChannel的ChannelPipeline中,而ServerBootstrap#childHandler设置的ChannelHandler是被添加到Channel的ChannelPipeline中 - message不同,ServerBootstrap#handler的msg是SocketChannel,ServerBootstrap#childHandler的msg,是客户端传输的数据。