博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Netty入门(三)构成部分
阅读量:5087 次
发布时间:2019-06-13

本文共 1406 字,大约阅读时间需要 4 分钟。

  该节主要讲解 Netty 的构成部分。

一、Channel

  它代表一个用于连接到实体如硬件设备、文件、网络套接字或程序组件,能够执行一个或多个不同的 I/O 操作的开放连接。可以比作传入和传出数据的传输工具。

 

二、Callback(回调)

  它就是一个方法,提供给另一种方法作为引用,这样后者就可以在某个合适的时间调用前者。比如下面的代码:

1 public class DiscardServerHandler extends ChannelInboundHandlerAdapter { 2      3     /** 4      * 收到数据时调用 5      */ 6     @Override 7     public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception { 8         // TODO 数据处理 9     }10 }

  当服务器收到消息时,会自动调用 ChannelRead 方法,因此我们可以重写该方法来实现对收到数据的处理。

 

三、Future

  它提供了另外一种通知应用操作已经完成的方式。每个 Netty 的出站(outbound) I/O 操作都会返回一个 ChannelFuture ,它允许一个或者多个 ChannelFutureListener 实例,回调方法 operationComplete() 会在操作完成时调用,下面为示例代码:

1 // 启动客户端,客户端用connect连接 2 ChannelFuture f = b.connect(host, port).sync(); 3 f.addListener(new ChannelFutureListener() {     4     public void operationComplete(ChannelFuture future) throws Exception {     5         if(future.isSuccess()) {        // 连接成功 6             ByteBuf buf = Unpooled.copiedBuffer("hello",             // 写数据 7                     Charset.defaultCharset()); 8             ChannelFuture wf = future.channel().writeAndFlush(buf);    // 发送数据 9         } else {10             // 打印错误11             Throwable cause = future.cause();12             cause.printStackTrace();13         }14     }15 });

 

  上面的代码首先连接到远程地址,当连接完成时,检查连接状态,若成功发送 hello,否则抛出错误。

 

四、Event 和 Handler

  没看懂,以后补。

 

转载于:https://www.cnblogs.com/coderJiebao/p/Netty03.html

你可能感兴趣的文章
可以嵌入程序的chrome
查看>>
开源的截图工具
查看>>
Eclipse4.7安装SWT
查看>>
POJ 1840 Eqs(哈希表)
查看>>
算法题目
查看>>
20170728 Celery项目 后台处理SQL SERVER的一个异常
查看>>
SSM框架整合
查看>>
PAT 1001-1010 题解
查看>>
创龙TMS320C6748开发板串口和中断学习笔记
查看>>
01 C语言程序设计--01 C语言基础--第3章 基本数据类型01
查看>>
Java 反射机制详解(上)
查看>>
oracle drop table(表)数据恢复方法
查看>>
编译LAMP部署动态网站环境
查看>>
Java 8 新的时间日期 API
查看>>
PHP基本语法
查看>>
Linux命令应用大词典-第8章 日期和时间
查看>>
jenkins+maven+svn构建项目,及远程部署war包到tomcat上
查看>>
HDOJ 1233 还是畅通工程
查看>>
垃圾回收机制
查看>>
C# lambda表达式及初始化器
查看>>