From ecef3df4890be54c1da2a8a4fc1c8c1f50f1c263 Mon Sep 17 00:00:00 2001 From: zhubaomin <zhubaomin> Date: 星期一, 07 四月 2025 15:41:47 +0800 Subject: [PATCH] 式样代码管理 --- pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpClient/TcpConnect.java | 71 +++++++++++++++++++++++++++++++++++ 1 files changed, 71 insertions(+), 0 deletions(-) diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpClient/TcpConnect.java b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpClient/TcpConnect.java new file mode 100644 index 0000000..a4dae41 --- /dev/null +++ b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpClient/TcpConnect.java @@ -0,0 +1,71 @@ +package com.dy.testClient.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 { + + public static final String rtuAddrKey = "rtuAddr" ; + public static final String threadJobKey = "threadJob" ; + + /** + * 鍒ゆ柇浼氳瘽鏄惁鏈夋晥 + * @param se 缃戠粶浼氳瘽 + * @return 鏄惁杩炴帴 + */ + public boolean isConnected(IoSession se) { + return (se != null && se.isConnected()); + } + + /** + * 鍒涘缓鏂颁細璇� + * @param rtuAddr rtu鍦板潃 + * @param job rtu宸ヤ綔绫� + * @param host 鏈嶅姟鍣║RI + * @param port 鏈嶅姟鍣ㄧ鍙� + * @param connectTimeout 杩炴帴瓒呮椂鏃堕暱 + * @param handler 鏁版嵁澶勭悊鑰� + * @param callback 鍥炶皟 + * @return 缃戠粶浼氳瘽 + */ + public void createSession(String rtuAddr, + MyThreadJob job, + 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(); + se.setAttribute(rtuAddrKey, rtuAddr) ; + se.setAttribute(threadJobKey, job) ; + 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; + } + } + } +} -- Gitblit v1.8.0