当前位置: 代码迷 >> 综合 >> netty框架之bootstrap.bind(port).sync()无死角解刨
  详细解决方案

netty框架之bootstrap.bind(port).sync()无死角解刨

热度:21   发布时间:2023-11-19 20:33:44.0

疑惑

 

bootstrap.bind(port)是绑定端口 .channel(NioServerSocketChannel.class)是负责监听的,为什么是先监听代码后绑定代码呢

解惑:不是的,.channel(NioServerSocketChannel.class)是通道标识,这个代码是客户端还是服务器

           bootstrap.bind(port)也是bootstrap的重点,先绑定端口,创建连接的;封装底层代码;


f.channel().closeFuture().sync();

疑惑:这个是等待服务器关闭?我只想知道服务器关闭了还能接受其他的客户端连接么?

解惑:f.channel();通过ChannelFuture可以获取到Channel,从而利用Channel在通道上进行读、写、关闭等操作;

          看下面图片你就知道了


 ChannelFuture f = bootstrap.bind(port).sync();

疑惑:既然有客户端需要连接,为什么绑定端口要设置成异步的?又不会阻塞?

解惑:因为这个代码是封装的,不仅仅是绑定端口号,更是建立连接,server.accpet();这个是阻塞的,所以是异步;


疑惑:netty框架中涉及通道,我想知道一个服务器端的netty框架有几个通道?

解惑:根据连接客户端的数量决定;服务端处理初始化的时候只有一个服务器类型的通道,但是当客户端连接数多的时候就会注册通道;


疑惑:绑定端口就是bootstrap启动类开始运作的时候,那么怎么建立连接呢?

解惑:bootstrap.bind(port).sync();这个代码底层就是server.accpet()建立连接。


 

  相关解决方案