| New file | 
|  |  |  | 
|---|
|  |  |  | package com.dy.simRtu.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; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|