public class TotalCallable implements Callable<Integer> {
private NioSocketConnector connector;
private ConnectFuture cf;
public TotalCallable(String ip, int port, Parameter parameter) {
connector = new NioSocketConnector();
// 超时设置
int connectTimeout = p.getConnectTimeout();
if (connectTimeout == 0) {
connectTimeout = Parameter.TIMEOUT_CONNECT;
}
connector.setConnectTimeoutMillis(connectTimeout * 1000L);
DefaultIoFilterChainBuilder chain = connector.getFilterChain();
chain.addLast("codec", new ProtocolCodecFilter(new ObjectSerializationCodecFactory()));
SocketSessionConfig cfg = connector.getSessionConfig();
cfg.setUseReadOperation(true);
// 建立连接
cf = connector.connect(new InetSocketAddress(ip, port));
// 等待连接创建完成
cf.awaitUninterruptibly();
public Integer call() {
IoSession session = cf.getSession();
try {
long s = System.currentTimeMillis();
int readTimeout = p.getSearchTimeout();
if (readTimeout == 0) {
readTimeout = Parameter.TIMEOUT_SEARCH;
}
// 发送
session.write(p).awaitUninterruptibly();
// 接收
ReadFuture readFuture = session.read();
if (readFuture.awaitUninterruptibly(readTimeout, TimeUnit.SECONDS)) {
Object msg = readFuture.getMessage();
if (msg instanceof Object[]) {
Object[] rt = (Object[]) msg;
if (rt.length > 1 && rt[0] instanceof Integer) {
Integer total = (Integer) rt[0];
return total;
}
}
} else {
// 读超时
}
long e = System.currentTimeMillis();
e = System.currentTimeMillis();
log.info("完成数据接收:" + (e - s));
} catch (Exception e) {
log.error("ip " + ip + " port : " + port);
log.error(e.getMessage(), e);
// 重新建立连接
cf = null;
} finally {
// 断开
session.close(true);
session.getService().dispose();
connector.dispose();
}
return 0;
}
}
分享到:
相关推荐
Apache Mina Server 2.0中文参考手册V1.0,Apache Mina2.0学习笔记(修订版)Apache Mina Server 2.0中文参考手册V1.0,Apache Mina2.0学习笔记(修订版)
深入理解Apache_Mina_(1)----_Mina的几个类 深入理解Apache_Mina_(2)----_与IoFilter相关的几个类 深入理解Apache_Mina_(3)----_与IoHandler相关的几个类 深入理解Apache_Mina_(4)----_IoFilter和IoHandler的区别和...
Apache MINA 线程模型配置 Mina配置
这个是我学的apache mina2.0学习笔记的实例
收集整理的Apache Mina chm pdf教程和帮助文档
Apache MINA是一个网络应用程序框架,用来帮助用户简单地开发高性能和高可靠性的网络应用程序。 apache-mina-2.0.7-bin.zip,apache-mina-2.0.7-src.zip,log4j-1.2.17.zip,slf4j-api-1.6.6.jar,slf4j-api-1.6.6-...
Apache MINA是 Apache 组织一个较新的项目,它为开发高性能和高可用性的网络应用程序提供了非常便利的框架。 当前发行的 MINA 版本支持基于 Java NIO 技术的 TCP/UDP 应用程序开发、串口通讯程序(只在最新的预览版...
apache mina的入门完整学习资料,附加中文参考手册。
apache mina 简单示例apache mina 简单示例apache mina 简单示例apache mina 简单示例apache mina 简单示例apache mina 简单示例
Apache MINA2实用手册 Apache MINA2实用手册
apache mina实例免费下载,有很多实例代码简单易懂欢迎大家下载!
一个Apache MINA使用案例源代码ApacheMina
Apache MINA 2.0 用户指南
apache mina chm 格式的api帮助文档。
最新的Apache Mina v2.0.8 API手册,chm格式,2014年9月下旬制作。
最近做rfid读写,C#和java都用udp不用厂家的动态库,udp自己写也简单,但是试了一下Apache mina ,接收的不是string,二十byte[] 数组,简单实现了UDP,网上也有例子,但是不是我要的。可用。
很详细的描述了apache mina 框架,对于那些对于英文不是很懂得人,这简直就是福音啊,哈哈
NULL 博文链接:https://mina-java.iteye.com/blog/1115429
NULL 博文链接:https://zhhphappy.iteye.com/blog/1608352
本资源包含两个 pdf 文档,一本根据官方最新文档 (http://mina.apache.org/mina-project/userguide/user-guide-toc.html) 整理的 mina_2.0_user_guide_en.pdf,一个中文翻译的 mina_2.0_user_guide_cn.pdf。...