package com.dy.pmsTest.tcpClient; 
 | 
  
 | 
import com.dy.common.util.Callback; 
 | 
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 TcpConnect { 
 | 
  
 | 
     /** 
 | 
     * 判断会话是否有效 
 | 
     * @param se 网络会话 
 | 
     * @return 是否连接 
 | 
     */ 
 | 
    public boolean isConnected(IoSession se) { 
 | 
        return (se != null && se.isConnected()); 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 创建新会话 
 | 
     * @param host 服务器URI 
 | 
     * @param port 服务器端口 
 | 
     * @param connectTimeout 连接超时时长 
 | 
     * @param handler 数据处理者 
 | 
     * @param callback 回调 
 | 
     * @return 网络会话 
 | 
     */ 
 | 
    public void createSession(String host , 
 | 
                               int port , 
 | 
                               int connectTimeout , 
 | 
                               TcpHandler handler, 
 | 
                               Callback callback) 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(); 
 | 
        callback.call(se) ; 
 | 
    } 
 | 
  
 | 
  
 | 
    /** 
 | 
     * 关闭会话联接 
 | 
     * @param se 
 | 
     * @param connectTimeout 
 | 
     */ 
 | 
    public void disconnect(IoSession se , int connectTimeout) { 
 | 
        if (se != null) { 
 | 
            try{ 
 | 
                se.closeNow().awaitUninterruptibly(connectTimeout); 
 | 
            }catch(Exception e){ 
 | 
            }finally{ 
 | 
                se = null; 
 | 
            } 
 | 
        } 
 | 
    } 
 | 
} 
 |