package com.dy.testClient.tcpConnect;
|
|
import org.apache.mina.core.future.ConnectFuture;
|
import org.apache.mina.core.session.IoSession;
|
|
import org.apache.mina.filter.codec.ProtocolCodecFilter;
|
import org.apache.mina.transport.socket.SocketConnector;
|
import org.apache.mina.transport.socket.nio.NioSocketConnector;
|
|
import java.net.InetSocketAddress;
|
|
public class MinaConnect {
|
|
/**
|
* 判断会话是否有效
|
* @param se 网络会话
|
* @return 是否连接
|
*/
|
protected boolean isConnected(IoSession se) {
|
return (se != null && se.isConnected());
|
}
|
|
/**
|
* 创建新会话
|
* @param host 服务器URI
|
* @param port 服务器端口
|
* @return 网络会话
|
*/
|
protected IoSession createSession(String host , int port , int connectTimeout , MinaHandler handler) throws Exception{
|
SocketConnector connector = new NioSocketConnector();
|
connector.getFilterChain().addLast("codec", new ProtocolCodecFilter(new LocalCodecFactory()));
|
connector.setHandler(handler);
|
ConnectFuture connectFuture = connector.connect(new InetSocketAddress(host, port));
|
connectFuture.awaitUninterruptibly(connectTimeout);
|
IoSession se = connectFuture.getSession();
|
return se ;
|
}
|
|
|
/**
|
* 关闭会话联接
|
* @param se
|
* @param connectTimeout
|
*/
|
protected void disconnect(IoSession se , int connectTimeout) {
|
if (se != null) {
|
try{
|
se.closeNow().awaitUninterruptibly(connectTimeout);
|
}catch(Exception e){
|
}finally{
|
se = null;
|
}
|
}
|
}
|
}
|