MINA 连接中断的相关问题。。。

来源:互联网 发布:手机怎么发送淘宝链接 编辑:程序博客网 时间:2024/05/01 15:04

http://www.iteye.com/problems/69477

 

背景是这样的,有客户端A,B  服务器端S
A 发送消息给 B
过程是 : A -》S -》B
过一段时间后 A与S的连接终断了。
问题1:我想在发送消息前先检测一个连接是否还在,用什么方法?
nioSocketConnector.isActive()?session.isBothIdle()?

问题2:如果检测发现已经中断,那么如果再连接?
重新new NioSocketConnector(),nioSocketConnector.getHandler();?

请大家指点。


问题2: 测试出这种情况,有些麻烦。总是要等一段时间。有没有什么更好的测试办法?谢谢大家。

-----------------------------------------------------------------------------------------------------------------------------------

我自己实验了下,纠正下第2个问题的第一种情况
这种情况下,光通过

Java代码 复制代码 收藏代码
  1. connector.connect(new InetSocketAddress(ip, port))   
connector.connect(new InetSocketAddress(ip, port)) 

是不行的,还是需要像第2种情况那样子来重新连接,当然连接前需要调用
Java代码 复制代码 收藏代码
  1. connector.dispose();  
connector.dispose();


释放资源,防止socket leak

--------------------------------------------------------------------------------------------------------------------------------

00

问题1:我想在发送消息前先检测一个连接是否还在,用什么方法?
nioSocketConnector.isActive()?session.isBothIdle()?


nioSocketConnector.isActive()不可简单就作为检测一个连接是否存在的依据,这个是用于判断nioSocketConnector是否有连接存在,nioSocketConnector可以持有多个连接
session.isBothIdle()方法是判断session是否为空闲状态
检测一个连接是否还在可以用session.isClosing()

问题2:如果检测发现已经中断,那么如果再连接?
重新new NioSocketConnector(),nioSocketConnector.getHandler();?


这里面分两种情况吧
1:连接是中断了,但是NioSocketConnector的实例还在,这时候就调用

Java代码 复制代码 收藏代码
  1. connector.connect(new InetSocketAddress(ip, port))  
connector.connect(new InetSocketAddress(ip, port))
重连
2:连接是中断了,NioSocketConnector的实例也销毁了,就需要
Java代码 复制代码 收藏代码
  1. new NioSocketConnector();   
  2. NioSocketConnector connector = connector.connect(new InetSocketAddress(ip, port));  
new NioSocketConnector();NioSocketConnector connector = connector.connect(new InetSocketAddress(ip, port));

2011年8月18日 17:14

 

原创粉丝点击