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; 
 | 
            } 
 | 
        } 
 | 
    } 
 | 
} 
 |