Netty入门(三)构成部分

  该节主要讲解 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

  没看懂,以后补。

 

posted @ 2018-05-09 20:15  Just_for_Myself  阅读(2636)  评论(0编辑  收藏  举报