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(); } + }