这是2015年最后一天的日落,拍摄于台湾省垦丁。台湾岛最南端,已经过了北回归线,冬天去时不到25度,温度适宜,但是还是被晒伤。
微信公众号
王皓的GitHub:https://github.com/TenaciousDWang
来创建一个Netty Server!
首先引用netty的依赖
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-all</artifactId>
<version>4.1.23.Final</version>
</dependency>
然后我们开始,需要了解的都已经写在注释中~
NettyServer.java
关于绑定方法:
serverBootstrap.bind(8000);这个方法会返回一个ChannelFuture,我们可以添加一个监听器来监听这个bind动作是否成功。
serverBootstrap.bind(8000).addListener(监听器);
我们来创建一个监听器GenericFutureListener<Future<? super Void>>(),这是一个接口,紧接的我们来实现void operationComplete(Future<? super Void> future){}这个方法。
将绑定端口抽取为void bind(final ServerBootstrap serverBootstrap, final int port),当future.isSuccess()返回错误时,我们使用递归方式重新调用bind方法本身,直到绑定端口,服务端成功启动。
最后我们来看一下serverBootstrap中对应的其他方法:
1.serverBootstrap.handler()
这里是对应服务端启动过程中添加一些处理逻辑,对比childHandler()方法,childHandler方法用来为每次来的新连接添加逻辑。
2.serverBootstrap.attr()与serverBootstrap.childAttr()
3.option()与childOption()方法
对应上面的attr()与childAttr(),option()与childOption()也分别对应NioServerSocketChannel与NioSocketChannel。
这里只介绍几种常见的,其他的属性请参照netty官网api文档
channelOption:
channelConfig for SocketChannel: