dianci/ruoyi-common/src/main/java/com/ruoyi/common/utils/SocketUtil.java

59 lines
2.1 KiB
Java

package com.ruoyi.common.utils;
import com.alibaba.fastjson.JSON;
import com.ruoyi.common.config.RadarStatusWebSocket;
import com.ruoyi.common.core.domain.entity.DataResponse;
import java.io.DataInputStream;
import java.io.InputStream;
import java.math.BigInteger;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.util.ArrayList;
import java.util.List;
public class SocketUtil {
public static DataResponse getData(Socket socket , String radarLocation , String radarIp) {
DataResponse dataResponse = new DataResponse();
dataResponse.setRadarIp(radarIp);
dataResponse.setRadarLocation(radarLocation);
try {
boolean connected = socket.isConnected();
if (!connected) {
System.out.println("雷达:" + radarIp + "===" + radarLocation + ": 连接异常:{}" + connected);
dataResponse.setStatus(0);
dataResponse.setData(null);
return dataResponse;
}
InputStream inputStream = socket.getInputStream(); // 获取输入流
int available = inputStream.available();
byte[] buffer = new byte[available];
inputStream.read(buffer, 0, available);
String hex = new BigInteger(1, buffer).toString(16);
if (!"0".equals(hex)) {
hex = "0" + hex;
List<Integer> decimal = new ArrayList<>();
List<String> strings = BitUtils.convertToArray(hex);
for (String string : strings) {
int s = BitUtils.covert(string);
decimal.add(s);
}
dataResponse.setData(decimal);
dataResponse.setStatus(1);
RadarStatusWebSocket.sendToAll(JSON.toJSONString(dataResponse));
return dataResponse;
}
} catch (Exception e) {
System.out.println("读取数据异常:" + radarIp);
}
dataResponse.setRadarIp(radarIp);
dataResponse.setRadarLocation(radarLocation);
dataResponse.setStatus(0);
dataResponse.setData(null);
return dataResponse;
}
}