59 lines
2.1 KiB
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;
|
|
}
|
|
}
|