zoukankan      html  css  js  c++  java
  • 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

      没看懂,以后补。

  • 相关阅读:
    文件包含漏洞
    任意文件上传
    改变弱口令威胁,从意识开始
    Node.js学习笔记10--Express搭网站(2)
    Node.js学习笔记9——Express框架
    Node.js学习笔记8
    Node.js学习笔记7-文件系统
    node.js学习笔记6
    node.js学习笔记5——核心模块1
    Node.js学习4
  • 原文地址:https://www.cnblogs.com/coderJiebao/p/Netty03.html
Copyright © 2011-2022 走看看