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