netty服务端的初始化
//类加载初始化办法@PostConstructpublic void start() { try { //创立netty服务器对象 ServerBootstrap bootstrap = new ServerBootstrap(); bootstrap.option(ChannelOption.SO_BACKLOG, 1024); bootstrap.option(ChannelOption.TCP_NODELAY, true); bootstrap.group(boss, work); bootstrap.channel(NioServerSocketChannel.class); bootstrap.childOption(ChannelOption.SO_KEEPALIVE, true); bootstrap.childHandler(myChannelInitializer); logger.info("netty服务器启动"); ChannelFuture future = bootstrap.bind(port).sync(); //ChannelFuture future2 = bootstrap.bind(port2).sync(); } catch (InterruptedException e) { logger.error("服务器启动失败"); //当服务器启动失败得时候由netty的调度性能来敞开netty的服务器 work.shutdownGracefully(); boss.shutdownGracefully(); }}
1.(ChannelOption.SO_BACKLOG, 1024 )
示意标识当服务器申请解决线程全满时,用于长期寄存已实现[三次握手]的申请的队列的最大长度。如果未设置或所设置的值小于1,Java将应用默认值为50
2.(ChannelOption.TCP_NODELAY, true)
TCP_NODELAY就是用于启用或对于[Nagle算法],如果要求高实时性,有数据发送时就马上发送,就将该选项设置为true敞开[Nagle算法],如果要缩小发送次数缩小网络交互,就设置为false等累积肯定大小后再发送。默认为false。
3.bootstrap.group(boss, work);
是初始化两个线程,一个线程负责承受新的连贯,一个负责解决读写;是开启了;
核心思想:轮询,没有连贯立即返回不要耽搁其余的客户端连贯,不会阻塞;一个线程不会浪费资源;
4.bootstrap.channel(NioServerSocketChannel.class);
申明利用反射机制来获取NioServerSocketChannel失去实例
5.bootstrap.childOption(ChannelOption.SO_KEEPALIVE, true);
当设置为true的时候,TCP会实现监控连贯是否无效,当连贯处于闲暇状态的时候,超过了2个小时,本地的TCP实现会发送一个数据包给近程的 socket,如果近程没有发回响应,TCP会继续尝试11分钟,晓得响应为止,如果在12分钟的时候还没响应,TCP尝试敞开socket连贯
6.bootstrap.childHandler(myChannelInitializer);
初始化客户端Handler~~~~
7.ChannelFuture future = bootstrap.bind(port).sync()
为服务端netty绑定端口