Netty学习笔记
来源:互联网 发布:韩顺平mysql笔记 编辑:程序博客网 时间:2024/05/22 09:07
package io.netty.example.discard;import io.netty.bootstrap.ServerBootstrap;import io.netty.channel.ChannelFuture;import io.netty.channel.ChannelInitializer;import io.netty.channel.ChannelOption;import io.netty.channel.EventLoopGroup;import io.netty.channel.nio.NioEventLoopGroup;import io.netty.channel.socket.SocketChannel;import io.netty.channel.socket.nio.NioServerSocketChannel;/** 1. Discards any incoming data. */public class DiscardServer { private int port; public DiscardServer(int port) { this.port = port; } public void run() throws Exception { EventLoopGroup bossGroup = new NioEventLoopGroup(); // (1) EventLoopGroup workerGroup = new NioEventLoopGroup(); try { ServerBootstrap b = new ServerBootstrap(); // (2) b.group(bossGroup, workerGroup) .channel(NioServerSocketChannel.class) // (3) .childHandler(new ChannelInitializer<SocketChannel>() { // (4) @Override public void initChannel(SocketChannel ch) throws Exception { ch.pipeline().addLast(new DiscardServerHandler()); } }) .option(ChannelOption.SO_BACKLOG, 128) // (5) .childOption(ChannelOption.SO_KEEPALIVE, true); // (6) // Bind and start to accept incoming connections. ChannelFuture f = b.bind(port).sync(); // (7) // Wait until the server socket is closed. // In this example, this does not happen, but you can do that to gracefully // shut down your server. f.channel().closeFuture().sync(); } finally { workerGroup.shutdownGracefully(); bossGroup.shutdownGracefully(); } } public static void main(String[] args) throws Exception { int port; if (args.length > 0) { port = Integer.parseInt(args[0]); } else { port = 8080; } new DiscardServer(port).run(); }}
NioEventLoopGroup 多线程,不同的实现,对于这两个线程Group而言怎么创建channel,怎么实现多线程,根据其内部实现不同而不同,并且可以配置。
1. boss:接收到来的请求
2. worker:处理接收到的请求
ServerBottstrap用来建立server的帮助类
NioServerSocketChannel 用来实例化新的channel来接收到来的请求
ChannelInitializer帮助用户配置新的channel,可以使用 ChannelPipeline来添加新的channel
ChannelOption
ChannelConfig
阅读全文
0 0
- 【Netty】netty学习笔记一
- Netty源码学习笔记
- Netty学习笔记一
- Netty 学习笔记
- Netty学习笔记
- Netty学习笔记
- Netty学习笔记 开始
- Netty学习笔记:1
- Netty学习笔记:2
- Netty源码学习笔记
- Netty 学习笔记
- Netty学习笔记
- Netty学习笔记
- netty 学习笔记
- netty学习笔记
- Netty学习笔记
- netty学习笔记
- Netty 学习笔记一、Hello Netty
- thinkphp 页面静态化
- Linux Shell的信号trap功能你必须知道的细节
- 闭包实现分时函数优化批量渲染DOM的过程
- 工控机CF卡槽无法使用的解决方案
- ssm框架的整合
- Netty学习笔记
- HDFS原理篇
- RabbitMQ的几种典型使用场景
- 移植libjpeg-turbo库到mips32架构跑openwrt系统的开发板上
- EditText 光标颜色
- [leetcode]#169. Majority Element
- JVM(四)JVM内存划分
- itext导出报表防止内存溢出
- Ceph 入门——内部构件