原文:一个 ServerBootstrap 可以认为有2个 Channel 集合,第一个集合包含一个单例 ServerChannel,代表持有一个绑定了本地端口的 socket;第二集合包含所有创建的 Channel,处理服务器所接收到的客户端进来的连接。
ServerBootstrap b = new ServerBootstap();
b.group(group) //4
.channel(NioServerSocketChannel.class)
这个是教材中常见的代码。在这里我只见到了一个serverchannel,那么第二个集合的Channel在哪里,还是说第二个集合的Channel是服务器自己自动建立的,只是我感觉不到而已???????
还有客户端一般只有一个Channel吗??????
ServerBootstrap 和ClientBootstrap实际上只是一个帮助类,帮助你快速创建并实例Channel对象。
ServerBootstrap 初始化为会创建一个ServerAcceptor类,用于接受客户端的连接。每当有新的客户端连接成功,会自动创建一个Channel。
protected override void Init(IServerChannel channel) { pipeline.AddLast(new ChannelInitializer<Channel>((ch) => { ch.Pipeline.AddLast(new ServerBootstrapAcceptor(_childGroup, _childHandler, _childOptions)); })); }
ServerBootstrapAcceptor:初始化客户端连接的Channel.
ClientBootstrap只是创建一个连接的Channel.