From a757961fc5b8f5ee5b79cc30615bd22d321d0d72 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期六, 05 七月 2025 17:01:46 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/core/thread/impl/NyShuttleThread.java | 114 +++++++++++++++++++++++++++++++++++++++++++--------------
1 files changed, 86 insertions(+), 28 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 3296a6b..319e1e7 100644
--- a/src/main/java/com/zy/core/thread/impl/NyShuttleThread.java
+++ b/src/main/java/com/zy/core/thread/impl/NyShuttleThread.java
@@ -15,10 +15,9 @@
import com.zy.core.thread.ShuttleThread;
import lombok.extern.slf4j.Slf4j;
-import java.io.BufferedReader;
-import java.io.InputStreamReader;
-import java.io.OutputStreamWriter;
+import java.io.*;
import java.net.InetAddress;
+import java.net.ServerSocket;
import java.net.Socket;
import java.text.MessageFormat;
import java.util.*;
@@ -30,12 +29,15 @@
private DeviceConfig deviceConfig;
private RedisUtil redisUtil;
private Socket socket;
+ private ServerSocket serverSocket;
- private static final boolean DEBUG = false;//璋冭瘯妯″紡
+ private boolean fake = false;
+ private boolean stopThread = false;
public NyShuttleThread(DeviceConfig deviceConfig, RedisUtil redisUtil) {
this.deviceConfig = deviceConfig;
this.redisUtil = redisUtil;
+ this.fake = deviceConfig.getFake();
}
@Override
@@ -46,7 +48,14 @@
//鐩戝惉娑堟伅
Thread innerThread = new Thread(() -> {
while (true) {
+ if(stopThread) {
+ break;
+ }
+
+ System.out.println("read");
+
try {
+ Thread.sleep(200);
listenSocketMessage();
} catch (Exception e) {
e.printStackTrace();
@@ -58,6 +67,11 @@
//鎵ц鎸囦护
Thread executeThread = new Thread(() -> {
while (true) {
+ if(stopThread) {
+ break;
+ }
+
+ System.out.println("executeThread");
try {
DeviceMsgUtils deviceMsgUtils = null;
try {
@@ -79,6 +93,35 @@
}
});
executeThread.start();
+
+ if (this.fake) {
+ Thread fakeThread = new Thread(() -> {
+ try {
+ serverSocket = new ServerSocket(deviceConfig.getPort());
+
+ while (true) {
+ if(stopThread) {
+ break;
+ }
+
+ System.out.println("fakeThread");
+ Socket accept = serverSocket.accept();
+ handleClient(accept);
+ }
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+ });
+ fakeThread.start();
+ }
+ }
+
+ private void handleClient(Socket socket) throws IOException {
+ InputStream inputStream = socket.getInputStream();
+ OutputStream outputStream = socket.getOutputStream();
+ outputStream.write("test".getBytes());
+ outputStream.flush();
+ socket.close();
}
private void executeCommand(DeviceCommandMsgModel deviceCommandMsg) {
@@ -159,30 +202,6 @@
}
}
- @Override
- public boolean connect() {
- try {
- InetAddress address = InetAddress.getByName(deviceConfig.getIp());
- if (address.isReachable(10000)) {
- Socket socket = new Socket(deviceConfig.getIp(), deviceConfig.getPort());
- socket.setSoTimeout(10000);
- socket.setKeepAlive(true);
- this.socket = socket;
- log.info(MessageFormat.format("銆恵0}銆戝洓鍚戠┛姊溅Socket閾炬帴鎴愬姛 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), deviceConfig.getDeviceNo(), deviceConfig.getIp(), deviceConfig.getPort()));
- }
- } catch (Exception e) {
- OutputQueue.SHUTTLE.offer(MessageFormat.format("銆恵0}銆戝洓鍚戠┛姊溅Socket閾炬帴澶辫触 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), deviceConfig.getDeviceNo(), deviceConfig.getIp(), deviceConfig.getPort()));
- return false;
- }
-
- return true;
- }
-
- @Override
- public void close() {
-
- }
-
public JSONObject parseSocketResult(JSONObject data) {
JSONObject device = new JSONObject();
@@ -231,4 +250,43 @@
extend.put("countQuantity", data.getInteger("countQuantity"));
return device;
}
+
+ @Override
+ public boolean connect() {
+ try {
+ InetAddress address = InetAddress.getByName(deviceConfig.getIp());
+ if (address.isReachable(10000)) {
+ Socket socket = new Socket(deviceConfig.getIp(), deviceConfig.getPort());
+ socket.setSoTimeout(10000);
+ socket.setKeepAlive(true);
+ this.socket = socket;
+ log.info(MessageFormat.format("銆恵0}銆戝洓鍚戠┛姊溅Socket閾炬帴鎴愬姛 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), deviceConfig.getDeviceNo(), deviceConfig.getIp(), deviceConfig.getPort()));
+ }
+ } catch (Exception e) {
+ OutputQueue.SHUTTLE.offer(MessageFormat.format("銆恵0}銆戝洓鍚戠┛姊溅Socket閾炬帴澶辫触 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), deviceConfig.getDeviceNo(), deviceConfig.getIp(), deviceConfig.getPort()));
+ return false;
+ }
+
+ return true;
+ }
+
+ @Override
+ public void close() {
+
+ }
+
+ @Override
+ public DeviceConfig getDeviceConfig() {
+ return this.deviceConfig;
+ }
+
+ @Override
+ public void stopThread() {
+ this.stopThread = true;
+ }
+
+ @Override
+ public boolean isFake() {
+ return this.fake;
+ }
}
--
Gitblit v1.9.1