首页天道酬勤netty如何处理多个handler,如何处理netty粘包和分包数据

netty如何处理多个handler,如何处理netty粘包和分包数据

admin 08-29 13:33 461次浏览

注:内容来自于Netty 权威指南第二版

1、netty最基本的服务端、客户端 public void start() throws InterruptedException { /*线程组*/ //用于接收客户端的链接 EventLoopGroup bossGroup = new NioEventLoopGroup(); //处理IO相关的读写操作,或者执行系统Task、定时任务Task等 EventLoopGroup workGroup= new NioEventLoopGroup(); try { /*客户端启动必备,服务端使用ServerBootstrap*/ Bootstrap b = new Bootstrap(); b.group(bossGroup ,workGroup) /*指明使用NIO进行网络通讯*/ .channel(NioSocketChannel.class) /*配置远程服务器的地址,服务器端就是配置LocalAdderss*/ .remoteAddress(new InetSocketAddress(host,port)) //这里配置我们自定义的handler,netty主要就是写各种各样的handler .handler(new EchoClientHandler()); /*连接到远程节点,阻塞等待直到连接完成*/ ChannelFuture f = b.connect().sync(); /*阻塞,直到channel关闭*/ f.channel().closeFuture().sync(); } finally { //阻塞关闭线程组 group.shutdownGracefully().sync(); } }

可以看到代码中b.group(bossGroup ,workGroup),添加了个两个group,刚开始学习一直不明白为什么,看了书之后才能够明白。

bossGroup:用于接收客户端的链接

接收客户端TCP链接,初始化Channel参数将链路状态变更时间通知给ChannelPipeline

workGroup:用于处理I/O相关的读写操作,或者执行系统Task、定时任务Task等

异步读取通信对端的数据报,发送读时间到ChannelPipeline异步发送消息到通信对端,调用channelPipeline的消息发送接口执行系统调用task执行定式任务Task,例如链路空闲状态监测定式任务。

 

 

节点管理 Kafka消息队列 UKafkaJava找出两个大数据量List集合中的不同元素的方法总结
samba中的workgroup设置 邮件服务器imap.qq没有响应请验证,邮件服务器使用的协议是什么
相关内容