| | |
| | | import java.net.InetAddress; |
| | | import java.net.Socket; |
| | | import java.net.SocketException; |
| | | import java.net.SocketTimeoutException; |
| | | import java.text.MessageFormat; |
| | | import java.util.*; |
| | | |
| | |
| | | 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; |
| | |
| | | } |
| | | |
| | | private void listenSocketMessage() { |
| | | StringBuffer sb = new StringBuffer(); |
| | | try { |
| | | if (this.socket == null) { |
| | | return; |
| | |
| | | // 获取输入流 |
| | | 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; |
| | | } |
| | | } |
| | |
| | | deviceMsgUtils.sendDeviceMsg(SlaveType.Shuttle, deviceConfig.getDeviceNo(), deviceMsgModel); |
| | | } |
| | | } |
| | | } catch (Exception e) { |
| | | // e.printStackTrace(); |
| | | } catch (SocketTimeoutException e) { |
| | | |
| | | } catch (IOException e) { |
| | | e.printStackTrace(); |
| | | closeSocket(); |
| | | } |
| | | } |
| | |
| | | return true; |
| | | } |
| | | |
| | | if(System.currentTimeMillis() - lastConnectTime < 1000 * 10) { |
| | | return false; |
| | | } |
| | | |
| | | if(this.deviceConfig.getFake()) { |
| | | return fakeConnect(); |
| | | }else { |
| | |
| | | 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())); |
| | | } |
| | | } |