netty ChannelFuture的不解?
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的不解?相关推荐
- netty 远程主机强迫关闭了一个现有的连接。
如果你的netty报这个错误 java.io.IOException: 远程主机强迫关闭了一个现有的连接. 或者 System.Net.Sockets.SocketException (0x80004 ...
- Netty原理五:ChannelFuture、DefaultChannelPromise对象解析
文章目录 1. 前言 2. 原理解析 2.1 ChannelFuture 调用 sync() 的作用 2.2 Channel 调用的 closeFuture() 是什么 1. 前言 学习Netty的时 ...
- Netty的ChannelFuture和ChannelPromise
在netty中可以通过channelFuture和channelPromise来实现异步操作.,可以通过官方给出的channelFuture的注释来看到关于channelFuture的状态变化. ...
- netty——Channl的常用方法、ChannelFuture、CloseFuture
文章目录 Channel Channel的常用方法 ChannelFuture CloseFuture Channel Channel的常用方法 close() 关闭channel closeFutu ...
- Netty粘包与半包问题解析与处理
Netty专题 Netty01-NIO详解 Netty02-入门 Netty粘包与半包问题解析与处理 Netty04-优化与源码 三. Netty 进阶 1. 粘包与半包 1.1 粘包现象 服务端代码 ...
- 实现分布式服务注册及简易的netty聊天
现在很多地方都会用到zookeeper, 用到它的地方就是为了实现分布式.用到的场景就是服务注册,比如一个集群服务器,需要知道哪些服务器在线,哪些服务器不在线. ZK有一个功能,就是创建临时节点,当机 ...
- netty集成ssl完整参考指南(含完整源码)
虽然我们在内部rpc通信中使用的是基于认证和报文头加密的方式实现安全性,但是有些时候仍然需要使用SSL加密,可能是因为对接的三方系统需要,也可能是由于open的考虑.中午特地测了下netty下集成ss ...
- 使用netty模仿dubbo服务
为什么80%的码农都做不了架构师?>>> 先上一张图 使用netty 5.* 实现类似dubbo的服务调用 公共类 api 实际开发时 提供者需要实现该包下面所有接口, 而服务 ...
- netty里集成spring注入mysq连接池(一)
netty的性能非常高,能达到8000rps以上,见 各个web服务器的性能对比测试 1.准备好需要的jar包 spring.jar //spring包 netty-3.2.4. ...
最新文章
- SIGIR 2021|用于搜索多样化的意图图建模
- js如何获取计算机当前时间,js获取当前系统时间
- 连续加班2周做出来的功能,老板说先不做了
- 深入了解Delphi 7中的四种消息框
- python 进阶案例_【python3】while和for的进阶案例
- clock_gettime参数中不同clock ID含义的差别
- Err.number错误号和错误说明(一)
- winform+c#之窗体之间的传值
- 实例教你怎么使用s扫描器
- 苦逼的草根站长屡战屡败,屡败屡战是因为爱网站
- 黑马程序员c++讲义课件笔记
- 快速排序的C语言实现
- java发卡系统_java毕业设计_springboot框架的自动发卡平台
- 如何使用navicat premium打开外部.sql文件
- python加mysql加界面用代码写_python加mysql_python操作mysql
- 从0开始搭建flask web 程序(1)
- 2.4. Prompting
- OpenCV——LCC(Local Color Correction)的Python复现
- 燃气灶电气线路图及原理_家用燃气灶解析之 热电偶的工作原理
- 从业务分析到系统建模、研发 基本方法论
热门文章
- 最全面免费下载的Altium designer 3D元件封装库模型效果图库,可以直接在工程中应用
- 安全测试常用几个工具
- 【MySQL基础教程】DML语句详细介绍
- c语言clip函数,深入理解裁剪(clip)
- 《程序.花开百味》雷伟.著
- 三年大厂面试官——二面题(偏难)
- SQL下三种执行CMD命令的方法
- 网拍短时间内难以跟传统拍卖分庭抗礼 互联网拍卖市场未来将是“兵家必争之地”
- Apache ShardingSphere 毕业成为 Apache 顶级项目,系业界首个 Apache 分布式数据库中间件项目
- PBOC规范研究之七 ----应用选择(转)