Netty编程模型入门案例

  在Socket编程模型可以看到发送数据和响应数据直接涉及到的是I/O模型,基于TCP/IP的socket编程使用的是流套接字。那什么是I/O模型呢?简单的理解就是用什么样的通道进行数据的发送和接收——这很大程度上决定了程序通信的性能。

  下面介绍另一种编程模式——Netty框架的入门案例:

  服务端实现步骤:

    1. 创建bossGroup线程组: 处理网络事件--连接事件

    2. 创建workerGroup线程组处理网络事件--读写事件

    3. 创建服务端启动助手

    4. 设置bossGroup线程组和workerGroup线程组

    5. 设置服务端通道实现为NIO

    6. 参数设置

    7. 创建一个通道初始化对象

    8. pipeline中添加自定义业务处理handler

            

    9. 启动服务端并绑定端口,同时将异步改为同步

    10. 关闭通道和关闭连接池

            

  客户端实现步骤:

     1. 创建线程组

     2. 创建客户端启动助手

     3. 设置线程组

     4. 设置客户端通道实现为NIO

     5. 创建一个通道初始化对象

     6. pipeline中添加自定义业务处理handler

     7. 启动客户端,等待连接服务端,同时将异步改为同步

     8. 关闭通道和关闭连接池

            

  测试:

            

            

  以上是同步编程模型:

            

  默认是异步的,Future表示异步的执行结果, 可以通过它提供的方法来检测执行是否完成,ChannelFuture 是他的一个子接口. ChannelFuture 是一个接口 ,可以添加监听器,当监听的事件发生时,就会通知到监听器。

   Future 对象刚刚创建时,处于非完成状态,调用者可以通过返回的 ChannelFuture 来获取操作执行的状态, 注册监听函数来执行完成后的操作。

   常用方法有:

     sync 方法, 阻塞等待程序结果返回;

     isDone 方法来判断当前操作是否完成;

     isSuccess 方法来判断已完成的当前操作是否成功; getCause 方法来获取已完成的当前操作失败的原因; isCancelled 方法来判断已完成的当前操作是否被取消;

    addListener 方法来注册监听器,当操作已完成(isDone 方法返回完成),将会通知指定的监听器;如果Future 对象已完成,则通知指定的监听器。

 

posted on 2024-06-04 10:39  池塘里洗澡的鸭子  阅读(10)  评论(0编辑  收藏  举报