bootstrap.connect(...);实现的是与服务器连接,因为连接必然要耗时间,我想为每一个用户在登录的时候都建立一个连接,也就是前边的ChannelFuture对象,并保存在session中,每次用到的时候就getChannel(),这样做是否可行???

但是每次都报我的channel关闭了,这是代码:

private TimeClientHandler process(CtrlProtocol cp){
        // 操作结果
//        CtrlProtocol result = null;
        
        Channel channel = future.awaitUninterruptibly().getChannel();
        System.out.println(future.toString());
        TimeClientHandler handler = channel.getPipeline().get(TimeClientHandler.class);
        
        handler.process(channel, cp);        
        
        future.awaitUninterruptibly();
        if (!future.isSuccess()) {
            future.getCause().printStackTrace();
        }        
        
        // 等待或监听数据全部完成
        future.getChannel().getCloseFuture().awaitUninterruptibly();

public class TimeClientHandler extends SimpleChannelHandler {  
 
    //服务器端返回的执行成功失败标志
    private String returnFlag = null;
    
    //服务器端返回的响应结果对象
    private CtrlProtocol m_ctrlProtocol = null;
    
    @Override
    public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) {
        this.m_ctrlProtocol = (CtrlProtocol) e.getMessage();
        this.returnFlag = this.m_ctrlProtocol.GetTypeValue((short) 104);
        e.getChannel().close();
    }

我知道这肯定是e.getChannel().close();这个造成的,但是如果我不关闭: future.getChannel().getCloseFuture().awaitUninterruptibly();就会一直在等待,求明白人帮解决下呀!!!谢谢!!

楼上正解,如果你只是为了节省每次通信都反复创建连接的开销,那你可以不必在这个问题上纠缠了,netty内部已经实现。你可以试试看,在同一个周期内,用clientchannel 去连接 server,ctx.getChannel().getId() 都是相同的(ctx是ChannelHandlerContext的实例化变量)。

netty ChannelFuture的不解?相关推荐

  1. netty 远程主机强迫关闭了一个现有的连接。

    如果你的netty报这个错误 java.io.IOException: 远程主机强迫关闭了一个现有的连接. 或者 System.Net.Sockets.SocketException (0x80004 ...

  2. Netty原理五:ChannelFuture、DefaultChannelPromise对象解析

    文章目录 1. 前言 2. 原理解析 2.1 ChannelFuture 调用 sync() 的作用 2.2 Channel 调用的 closeFuture() 是什么 1. 前言 学习Netty的时 ...

  3. Netty的ChannelFuture和ChannelPromise

    在netty中可以通过channelFuture和channelPromise来实现异步操作.,可以通过官方给出的channelFuture的注释来看到关于channelFuture的状态变化.    ...

  4. netty——Channl的常用方法、ChannelFuture、CloseFuture

    文章目录 Channel Channel的常用方法 ChannelFuture CloseFuture Channel Channel的常用方法 close() 关闭channel closeFutu ...

  5. Netty粘包与半包问题解析与处理

    Netty专题 Netty01-NIO详解 Netty02-入门 Netty粘包与半包问题解析与处理 Netty04-优化与源码 三. Netty 进阶 1. 粘包与半包 1.1 粘包现象 服务端代码 ...

  6. 实现分布式服务注册及简易的netty聊天

    现在很多地方都会用到zookeeper, 用到它的地方就是为了实现分布式.用到的场景就是服务注册,比如一个集群服务器,需要知道哪些服务器在线,哪些服务器不在线. ZK有一个功能,就是创建临时节点,当机 ...

  7. netty集成ssl完整参考指南(含完整源码)

    虽然我们在内部rpc通信中使用的是基于认证和报文头加密的方式实现安全性,但是有些时候仍然需要使用SSL加密,可能是因为对接的三方系统需要,也可能是由于open的考虑.中午特地测了下netty下集成ss ...

  8. 使用netty模仿dubbo服务

    为什么80%的码农都做不了架构师?>>>    先上一张图 使用netty 5.* 实现类似dubbo的服务调用 公共类 api 实际开发时 提供者需要实现该包下面所有接口, 而服务 ...

  9. netty里集成spring注入mysq连接池(一)

    netty的性能非常高,能达到8000rps以上,见 各个web服务器的性能对比测试 1.准备好需要的jar包 spring.jar            //spring包 netty-3.2.4. ...

最新文章

  1. SIGIR 2021|用于搜索多样化的意图图建模
  2. js如何获取计算机当前时间,js获取当前系统时间
  3. 连续加班2周做出来的功能,老板说先不做了
  4. 深入了解Delphi 7中的四种消息框
  5. python 进阶案例_【python3】while和for的进阶案例
  6. clock_gettime参数中不同clock ID含义的差别
  7. Err.number错误号和错误说明(一)
  8. winform+c#之窗体之间的传值
  9. 实例教你怎么使用s扫描器
  10. 苦逼的草根站长屡战屡败,屡败屡战是因为爱网站
  11. 黑马程序员c++讲义课件笔记
  12. 快速排序的C语言实现
  13. java发卡系统_java毕业设计_springboot框架的自动发卡平台
  14. 如何使用navicat premium打开外部.sql文件
  15. python加mysql加界面用代码写_python加mysql_python操作mysql
  16. 从0开始搭建flask web 程序(1)
  17. 2.4. Prompting
  18. OpenCV——LCC(Local Color Correction)的Python复现
  19. 燃气灶电气线路图及原理_家用燃气灶解析之 热电偶的工作原理
  20. 从业务分析到系统建模、研发 基本方法论

热门文章

  1. 最全面免费下载的Altium designer 3D元件封装库模型效果图库,可以直接在工程中应用
  2. 安全测试常用几个工具
  3. 【MySQL基础教程】DML语句详细介绍
  4. c语言clip函数,深入理解裁剪(clip)
  5. 《程序.花开百味》雷伟.著
  6. 三年大厂面试官——二面题(偏难)
  7. SQL下三种执行CMD命令的方法
  8. 网拍短时间内难以跟传统拍卖分庭抗礼 互联网拍卖市场未来将是“兵家必争之地”
  9. Apache ShardingSphere 毕业成为 Apache 顶级项目,系业界首个 Apache 分布式数据库中间件项目
  10. PBOC规范研究之七 ----应用选择(转)