From 0563b52626eab37a5095fb85f20ab347985c7c2e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?LAPTOP-S9HJSOEB=5C=E6=98=8A=E5=A4=A9?= Date: Wed, 21 Jun 2023 11:36:36 +0800 Subject: [PATCH] =?UTF-8?q?=E6=97=A0=E9=99=90=E9=87=8D=E8=BF=9E=20?= =?UTF-8?q?=E5=BF=BD=E7=95=A5=E8=BD=AF=E5=8A=A0=E8=BD=BD=20=E8=AF=BB?= =?UTF-8?q?=E5=8F=96sick=E5=8A=A0=E6=97=B6=E9=97=B4=E9=99=90=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 ++ .../web/config/ConfigProperties.java | 2 ++ .../web/service/ksec/KsecNettyClient.java | 7 +++- .../web/service/sick/SickSocket.java | 36 +++++++++++++++++-- 4 files changed, 43 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index 6198d43..70347e4 100644 --- a/.gitignore +++ b/.gitignore @@ -32,3 +32,5 @@ target /modules/modules.iml /modules/filter/filter.iml /modules/common/common.iml +lp.key +lp.lic diff --git a/web/src/main/java/com/zhehekeji/web/config/ConfigProperties.java b/web/src/main/java/com/zhehekeji/web/config/ConfigProperties.java index 2c919dd..f667d62 100644 --- a/web/src/main/java/com/zhehekeji/web/config/ConfigProperties.java +++ b/web/src/main/java/com/zhehekeji/web/config/ConfigProperties.java @@ -82,6 +82,8 @@ public class ConfigProperties { public static class KSEC{ private String ip; private Integer port; + private Integer reconnectNum = 10; + private Integer reconnectInterval = 10; } @Data diff --git a/web/src/main/java/com/zhehekeji/web/service/ksec/KsecNettyClient.java b/web/src/main/java/com/zhehekeji/web/service/ksec/KsecNettyClient.java index e5e3b25..09819b2 100644 --- a/web/src/main/java/com/zhehekeji/web/service/ksec/KsecNettyClient.java +++ b/web/src/main/java/com/zhehekeji/web/service/ksec/KsecNettyClient.java @@ -67,13 +67,18 @@ public class KsecNettyClient { } catch (InterruptedException e) { e.printStackTrace(); } - while (num < RECONNECT_NUM && !isConnected) { + while ((ksec.getReconnectNum() == -1 || num < ksec.getReconnectNum() ) && !isConnected) { try { createClient(ksec); } catch (Exception e) { //没连上 继续 log.error("reconnect error num:{}", num); num++; + try { + Thread.sleep(ksec.getReconnectInterval()*1000); + } catch (InterruptedException ex) { + throw new RuntimeException(ex); + } continue; } isConnected = true; diff --git a/web/src/main/java/com/zhehekeji/web/service/sick/SickSocket.java b/web/src/main/java/com/zhehekeji/web/service/sick/SickSocket.java index 2a85da4..4f46a5d 100644 --- a/web/src/main/java/com/zhehekeji/web/service/sick/SickSocket.java +++ b/web/src/main/java/com/zhehekeji/web/service/sick/SickSocket.java @@ -8,6 +8,10 @@ import java.io.*; import java.net.InetSocketAddress; import java.net.Socket; import java.nio.charset.StandardCharsets; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.FutureTask; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; /** * sick扫码枪 @@ -35,7 +39,7 @@ public class SickSocket { while ("NoRead".equals(code) && i <= 4){ Long start = System.currentTimeMillis(); writeCmd(os); - code = read(is); + code = read(is,ip); Long end = System.currentTimeMillis(); log.info("sick read time:{}",(end-start)/1000); tcpLogger.info("count:{},ip:{},code:{}",i,ip,code); @@ -81,9 +85,35 @@ public class SickSocket { os.write(bytes); } - private static String read(InputStream inStream) throws IOException { + + private static String read(InputStream inStream,String ip) throws IOException { BufferedReader bd = new BufferedReader(new InputStreamReader(inStream)); - return bd.readLine(); + StringBuilder stringBuilder = new StringBuilder(); + FutureTask future = new FutureTask <>(()->{ + StringBuilder bdString = new StringBuilder(); + while (true) { + try { + bdString.append((char) bd.read()); + } catch (IOException exc) { + throw new RuntimeException(exc); + } + if (bdString.toString().contains("\\n") || bdString.toString().contains("\n")) { + break; + } + } + return bdString; + }); + try { + new Thread(future).start(); + stringBuilder = future.get(1000, TimeUnit.MILLISECONDS); + } catch (InterruptedException | ExecutionException | TimeoutException e) { + + tcpLogger.error("sick 可以连接但发送返回存在问题,ip:{},info:{}", ip, e); + log.error("sick 可以连接但发送返回存在问题,ip:{},info:{}", ip, e); + throw new RuntimeException(e); + } + return stringBuilder.toString(); } + }