netty客户端异步获取数据

源码见,下面主要是做个重要代码记录

http://download.csdn.net/detail/json20080301/8180351

NETTY客户端获取数据采用的方式是异步获取数据,不像socket你不知道服务端何时处理请求,何时能得到响应,即使得到响应也没法自动退出程序;

必须使用以下步骤:

=================step 0.当然是发起异步连接操作,等待客户端链路关闭

//发起异步连接操作

ChannelFuture f = b.connect(this.host, this.port).sync();

//等待客户端链路关闭

f.channel().closeFuture().sync();

================step1.添加超时handler : pipeline.addLast( new ReadTimeoutHandler(6));

================step2.//优雅退出,释放NIO线程组 group.shutdownGracefully();

================step3.自定义EchoClientHandler ,捕获ReadTimeoutHandler的6秒异常,然后关闭链路

public class EchoClientHandler extends ChannelInboundHandlerAdapter {

/*

*捕获ReadTimeoutHandler的6秒异常,然后关闭链路;

*/

public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) {

logger.log(Level.WARNING, "Unexpected exception from downstream.",

cause);

ctx.close();//发生异常关闭链路

}

}

====================对于第三步我想说,如果你自定义的数据协议中有判断消息包是否结束的方法,也可以将 ctx.close();//发生异常关闭链路
, 举例如下:

public void channelReadComplete(ChannelHandlerContext ctx) throws Exception {

ctx.flush();

if(sureQuit()){

// ctx.close();

}

}

判断是否可以关闭链路;一旦关系链路,客户端代码就会执行 group.shutdownGracefully(); 释放线程组,这样客户端就可以整个进程退出啦。

时间: 2024-10-10 21:52:18

netty客户端异步获取数据的相关文章

Validform和aui2.0结合使用的表单自定义验证提示和列表页异步获取数据Demo

二.添加自定义验证演示       Validform验证提示大多都是在输入框或下拉框的右边或下面.感觉就是不美观,特别是表单字段少的时候,这种在相应对象旁边的提示就没必要了,      它会给人一种不友好的感觉(只是自己的感觉).所以下面写了三种添加演示,希望大家能给出建议,以免下次用起来纠结,不知道用哪种好.        表单验证插件是我们经常使用的Validform_v5.3.2_min.js.先上添加1演示的表单验证js代码,这里我设置了点击提交按钮后才验证.其他添加演示的区别不大,详

MVC—实现ajax+mvc异步获取数据

之前写过ajax和一般处理程序的结合实现前后台的数据交换的博客,如今做系统用到了MVC,同一时候也用到了异步获取数据. ajax+一般处理程序与MVC+ajax原理是一样的在"URL"中前者写的一般处理程序的名字.而后者写到Controller中须要调用的方法. Controller中的设计 using System.Collections.Generic; using System.Web.Mvc; namespace mvcAjaxByAjax.Controllers { //考试

datatables异步获取数据、简单实用

IKC项目总结 一.认证难题管理模块 1. 如何使用datatables进行获取数据内容 datatables简介:Datatables是一款jquery表格插件.它是一个高度灵活的工具,可以将任何HTML表格添加高级的交互功能. 分页,即时搜索和排序 几乎支持任何数据源:DOM, javascript, Ajax 和 服务器处理 支持不同主题 DataTables, jQuery UI, Bootstrap, Foundation 各式各样的扩展: Editor, TableTools, Fi

nuxt.js中asyncData 方法能够在渲染组件之前异步获取数据

https://zh.nuxtjs.org/api/ asyncData 方法 你可能想要在服务器端获取并渲染数据.Nuxt.js添加了asyncData方法使得你能够在渲染组件之前异步获取数据. asyncData方法会在组件(限于页面组件)每次加载之前被调用.它可以在服务端或路由更新之前被调用. 原文地址:https://www.cnblogs.com/marquess/p/12628749.html

IOS异步获取数据并刷新界面dispatch_async的使用方法

在ios的开发和学习中多线程编程是必须会遇到并用到的.在java中以及Android开发中,大量的后台运行,异步消息队列,基本都是运用了多线程来实现. 同样在,在ios移动开发和Android基本是很类似的一种模型. 但是很多时候,在应用开发中,我们会发现本身并没有自己编码去处理一些并发的事件,去开辟新的子线程等等. (虽然一般的调用sdk发起一个网络请求,系统都是会默认给你新起一个线程去处理的). 整个程序看上去基本就是在Main线程中执行. 确实也是这样的一种现象,因为我们基本都是在操作控件

GDC异步获取数据例子

- (void)processImageDataWithBlock:(void (^)(NSData *imageData))processImage //声明函数processImageDataWithBlock 接收一个(void (^)(NSData *imageData))processImage 块参数, 该块参数接收一个NSData*参数.实质上这个块参数是异步回调函数 { NSString *url = self.imageURL; dispatch_queue_t callerQ

使用 antd Table组件, 异步获取数据

使用React.js + Redux + antd 制作CMS 后台内容管理系统,分享一点点积累,欢迎讨论. 在this.state中初始化数据: this.state = { pageNum:1, /*翻页查询*/ pageSize:10, /*分页查询*/ activePage: 1, /*默认显示一页*/ selectedRowKeys: [], // 这里配置默认勾选列 loading: false, /*antd*/ selectedRow:[] } 在制作过程中,根据需要把antd的

JavaScript异步获取数据解析

<script type="text/javascript">    var xhr=false;    function createXhr() {    var xhobj = false;    try {        xhobj = new ActiveXObject("Msxml2.XMLHTTP"); // ie msxml3.0+    } catch (e) {        try {            xhobj = new A

关于本地$.get(url,function(data)),异步获取数据

起初 此处url为本地同目录下的html片段 $.get(url,function(data) { alert(url); $("#gallery").append(data); }); 浏览器无法获取:解决方法:在谷歌快捷方式添加--disable-web-security,并重启浏览器后正常运行