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