package com.mes.job; import com.mes.glassinfo.service.GlassInfoService; import lombok.SneakyThrows; import org.springframework.beans.factory.annotation.Autowired; import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.InetSocketAddress; import java.net.Socket; public class BarcodeReadThread extends Thread{ public BarcodeReadThread(String ip,Integer port,Downpush downpush) { this.ip=ip; this.port=port; this.downpush=downpush; } private Socket socket; private String ip; private Integer port; private Downpush downpush; private BufferedReader in; @SneakyThrows @Override public void run() { connectCheckin();//初次 循环尝试连接,直到连接成功 while (this!=null) { try { in = new BufferedReader(new InputStreamReader(socket.getInputStream())); String response = in.readLine(); if(response!=null) { downpush.barcodeCheckin(response); } } catch (Exception exception) { //异常,重连 connectCheckin(); } finally { if(in!=null) { in.close(); } } Thread.sleep(100); } } @SneakyThrows private void connectCheckin() { while (this!=null) { try { socket=new Socket(); socket.setSoTimeout(10000); socket.connect(new InetSocketAddress(ip,port)); if(socket.isConnected()) { return; } } catch (Exception exception) { } Thread.sleep(1000); } } }