From 53a71007458bdded764dc52a39d596f8c4ca28db Mon Sep 17 00:00:00 2001
From: DELL <DELL@qq.com>
Date: 星期四, 18 九月 2025 15:42:41 +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