From 4f99f59668c9160ca60958b7347944def26f2228 Mon Sep 17 00:00:00 2001 From: liurunyu <lry9898@163.com> Date: 星期日, 27 四月 2025 10:58:53 +0800 Subject: [PATCH] 回退配置 --- pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu3rd/src/main/java/com/dy/rtuMw3rd/tcp4Bjnl/TcpConnect.java | 83 +++++++++++++++++++++++++++++++++++++++++ 1 files changed, 83 insertions(+), 0 deletions(-) diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu3rd/src/main/java/com/dy/rtuMw3rd/tcp4Bjnl/TcpConnect.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu3rd/src/main/java/com/dy/rtuMw3rd/tcp4Bjnl/TcpConnect.java new file mode 100644 index 0000000..9a8fe01 --- /dev/null +++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu3rd/src/main/java/com/dy/rtuMw3rd/tcp4Bjnl/TcpConnect.java @@ -0,0 +1,83 @@ +package com.dy.rtuMw3rd.tcp4Bjnl; + +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; + +/** + * @Author: liurunyu + * @Date: 2025/03/18 14:20 + * @Description + */ +public class TcpConnect { + + private static IoSession ioSession ; + + public static IoSession getIoSession(){ + return ioSession; + } + + /** + * 鍒ゆ柇浼氳瘽鏄惁鏈夋晥 + * @return 鏄惁杩炴帴 + */ + public static boolean isConnected() { + return (ioSession != null && ioSession.isConnected()); + } + + /** + * 鍒涘缓鏂颁細璇� + * @param host 鏈嶅姟鍣║RI + * @param port 鏈嶅姟鍣ㄧ鍙� + * @param connectTimeout 杩炴帴瓒呮椂鏃堕暱 + * @param handler 鏁版嵁澶勭悊鑰� + * @param callback 鍥炶皟 + * @return 缃戠粶浼氳瘽 + */ + public static 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 NetDataCodecFactory())); + connector.setHandler(handler); + ConnectFuture connectFuture = connector.connect(new InetSocketAddress(host, port)); + connectFuture.awaitUninterruptibly(connectTimeout); + ioSession = connectFuture.getSession(); + callback.call(ioSession) ; + } + + + /** + * 鍏抽棴浼氳瘽鑱旀帴 + * @param se + * @param connectTimeout + */ + public static void disconnect(IoSession se , int connectTimeout) { + if (se != null) { + try{ + se.closeNow().awaitUninterruptibly(connectTimeout); + }catch(Exception e){ + if(se.isConnected()){ + se.closeNow().awaitUninterruptibly(connectTimeout); + } + }finally{ + se = null; + } + } + } + + public static void output(byte[] bs) throws Exception{ + if (!isConnected()) { + throw new Exception("鏈垱寤虹綉缁滆繛鎺�"); + }else{ + ioSession.write(bs); + } + } +} -- Gitblit v1.8.0