Bootstrap类提供的API(包含也包含继承自AbstractBootstrap的):

名称 描述
group(EventLoopGroup) 设置用于处理channel所有事件的EventLoopGroup
channel(Class<? extends C>)
channelFactory(ChannelFactory<? extends C>)
channel()方法指定了Channel的实现类,如果该实现类没提供默认的构造函数,可以通过调用channelFactory()指定一个工厂类,它将会被bind()方法调用
localAddress(SockerAddresss) 指定Channel应该绑定到的本地地址,如果没有指定,则将由操作系统创建一个随机的地址,或者也可以通过bind()或者connect()方法指定localAddress
option(ChannelOption option,T value) 设置ChannelOption,将其被应用到每个新 创建的Channel的ChannelConfig,这些选项将会通过bind()或者connect()方法设置到Channel,不管哪个先被调用,这个方法在Channel已经被创建后再调用将不会有任何效果。支持的ChannelOption取决于使用的Channel类型
attr(Attribute key,T value) 指定新创建的Channel的属性值,这些属性值是通过bind()或者connect()方法设置到Channel的,具体取决于谁先被调用,在Channel被创建后不会有任何的效果
handler(ChannelHandler) 设置将被添加到ChannelPipeline以接收事件通知的ChannelHandler
clone() 创建一个当前Bootstrap的克隆,其具有和原始的BootStrap相同的设置信息,是一个浅拷贝
remoteAddress(SocketAddress) 设置远程地址,或者可以通过connect()方法来指定它
connect() 连接到远程节点并返回一个ChannelFuture,其将会在连接操作完成后接收到通知
bind() 绑定Channel并返回一个ChannelFuture,其将会在绑定操作完成后接收到通知,在哪之后必须调用connect()方法来建立连接

引导客户端

Bootstrap类被用于客户端或者使用了无连接协议的应用程序中创建Channel。

  1. Bootstrap类会在bind()方法被调用后创建一个新的Channel,在这之后将会调用connect()方法以建立连接,这里创建的Channel主要作用是服务器侦听端口上的远程连接的方法。
  2. 在connect()方法被调用后,Bootstrap类将会创建一个新的Channel,该Channel主要作用于与远程连接的通信

Channel和EventLoopGroup的兼容性

image.png
OIO和NIO都有不同的EventLoopGroup的实现,不同的前缀不能混合使用,混合使用会导致“IllegalStateException”异常。