From d3417407db947cf6f10c163d75325fd7df408eab Mon Sep 17 00:00:00 2001
From: zy <zy@123>
Date: 星期日, 03 八月 2025 15:19:12 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/core/thread/impl/NyShuttleThread.java |   21 ++++++++++++++++-----
 1 files changed, 16 insertions(+), 5 deletions(-)

diff --git a/src/main/java/com/zy/core/thread/impl/NyShuttleThread.java b/src/main/java/com/zy/core/thread/impl/NyShuttleThread.java
index 2f17b9d..13c0017 100644
--- a/src/main/java/com/zy/core/thread/impl/NyShuttleThread.java
+++ b/src/main/java/com/zy/core/thread/impl/NyShuttleThread.java
@@ -21,6 +21,7 @@
 import java.net.InetAddress;
 import java.net.Socket;
 import java.net.SocketException;
+import java.net.SocketTimeoutException;
 import java.text.MessageFormat;
 import java.util.*;
 
@@ -33,6 +34,7 @@
     private Socket socket;
     private boolean stopThread = false;
     private HashMap<Integer, String> resultKeyMap = new HashMap<Integer, String>();
+    private long lastConnectTime = System.currentTimeMillis();
 
     public NyShuttleThread(DeviceConfig deviceConfig, RedisUtil redisUtil) {
         this.deviceConfig = deviceConfig;
@@ -128,6 +130,7 @@
     }
 
     private void listenSocketMessage() {
+        StringBuffer sb = new StringBuffer();
         try {
             if (this.socket == null) {
                 return;
@@ -145,13 +148,14 @@
             // 鑾峰彇杈撳叆娴�
             BufferedReader reader = new BufferedReader(new InputStreamReader(this.socket.getInputStream()));
             // 璇诲彇鏈嶅姟鍣ㄧ殑鍝嶅簲
-            StringBuffer sb = new StringBuffer();
             char[] chars = new char[2048];//缂撳啿鍖�
             while (true) {
                 reader.read(chars);
                 String trim = new String(chars);
-                sb.append(trim);
-                if (trim.lastIndexOf("\r\n") != -1) {
+                int lastIndexOf = trim.lastIndexOf("\r\n");
+                if (lastIndexOf != -1) {
+                    trim = trim.substring(0, lastIndexOf);
+                    sb.append(trim);
                     break;
                 }
             }
@@ -210,8 +214,10 @@
                     deviceMsgUtils.sendDeviceMsg(SlaveType.Shuttle, deviceConfig.getDeviceNo(), deviceMsgModel);
                 }
             }
-        } catch (Exception e) {
-//            e.printStackTrace();
+        } catch (SocketTimeoutException e) {
+
+        } catch (IOException e) {
+            e.printStackTrace();
             closeSocket();
         }
     }
@@ -272,6 +278,10 @@
                 return true;
             }
 
+            if(System.currentTimeMillis() - lastConnectTime < 1000 * 10) {
+                return false;
+            }
+
             if(this.deviceConfig.getFake()) {
                 return fakeConnect();
             }else {
@@ -281,6 +291,7 @@
                     deviceSocket.setSoTimeout(10000);
                     deviceSocket.setKeepAlive(true);
                     this.socket = deviceSocket;
+                    this.lastConnectTime = System.currentTimeMillis();
                     log.info(MessageFormat.format("銆恵0}銆戝洓鍚戠┛姊溅Socket閾炬帴鎴愬姛 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), deviceConfig.getDeviceNo(), deviceConfig.getIp(), deviceConfig.getPort()));
                 }
             }

--
Gitblit v1.9.1