|
|
@ -14,7 +14,19 @@ import io.netty.channel.socket.nio.NioServerSocketChannel; |
|
|
|
* @copyright Wonhigh Information Technology (Shenzhen) Co.,Ltd. |
|
|
|
*/ |
|
|
|
public class SimpleServer { |
|
|
|
|
|
|
|
/** |
|
|
|
* netty核心组件 |
|
|
|
* |
|
|
|
* channel |
|
|
|
* channelConfig |
|
|
|
* channelId |
|
|
|
* Unsafe |
|
|
|
* Pipeline |
|
|
|
* ChannelHander |
|
|
|
* |
|
|
|
* @param args |
|
|
|
* @throws Exception |
|
|
|
*/ |
|
|
|
public static void main(String[] args) throws Exception { |
|
|
|
EventLoopGroup bossGroup = new NioEventLoopGroup(1); |
|
|
|
EventLoopGroup workerGroup = new NioEventLoopGroup(); |
|
|
@ -25,7 +37,14 @@ public class SimpleServer { |
|
|
|
* 通过给它设置一系列参数来绑定端口启动服务 |
|
|
|
*/ |
|
|
|
ServerBootstrap b = new ServerBootstrap(); |
|
|
|
/** |
|
|
|
* bossGroup负责接收请求 |
|
|
|
* workerGroup负责处理请求 |
|
|
|
*/ |
|
|
|
b.group(bossGroup, workerGroup) |
|
|
|
//最终调用的是ReflectiveChannelFactory.newChannel() |
|
|
|
//通过反射创建对象 NioServerSocketChannel |
|
|
|
//最终创建channel相当于调用默认构造函数new出一个NioServerSocketChannel对象 |
|
|
|
.channel(NioServerSocketChannel.class) |
|
|
|
.handler(new SimpleServerHandler()) |
|
|
|
.childHandler(new ChannelInitializer<SocketChannel>() { |
|
|
@ -34,6 +53,10 @@ public class SimpleServer { |
|
|
|
} |
|
|
|
}); |
|
|
|
|
|
|
|
/** |
|
|
|
* bind方法第一步通过反射new一个NioServerSocketChannel对象,并且在 |
|
|
|
* new的过程中创建一系列核心组件 |
|
|
|
*/ |
|
|
|
ChannelFuture f = b.bind(8888).sync(); |
|
|
|
|
|
|
|
f.channel().closeFuture().sync(); |
|
|
|