古井使用自身tcp服务
parent
8b8051fc35
commit
2234842c28
@ -0,0 +1,125 @@
|
||||
package com.zhehekeji.web.service.algorithm;
|
||||
|
||||
import com.zhehekeji.web.config.ConfigProperties;
|
||||
import com.zhehekeji.web.entity.AlgorithmPojo;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
import java.io.*;
|
||||
import java.net.*;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Slf4j
|
||||
public class AlgorithmClint {
|
||||
AlgorithmPojo clint(String ip, Integer port, AlgorithmPojo algorithmPojo, List<ConfigProperties.SmokeBoxType> list) {
|
||||
try {
|
||||
Socket socket = new Socket();
|
||||
Map<String, ConfigProperties.SmokeBoxType> map = list.stream().collect(Collectors.toMap(ConfigProperties.SmokeBoxType::getType, k->k));
|
||||
|
||||
socket.connect(new InetSocketAddress(ip, port), 5000);
|
||||
System.out.println("Connected to server");
|
||||
socket.setSoTimeout(10000);
|
||||
|
||||
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
|
||||
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
|
||||
//修改全局变量
|
||||
updateTaskId(reader,writer,algorithmPojo);
|
||||
Thread.sleep(600);
|
||||
|
||||
//获取结果并拍照
|
||||
String message = "trigger:1";
|
||||
|
||||
writer.write(message);
|
||||
|
||||
writer.flush();
|
||||
System.out.println("Sent message to server: " + message);
|
||||
|
||||
StringBuilder response =new StringBuilder();
|
||||
// 接收服务器的响应
|
||||
while (true){
|
||||
char[] lengthBytes = new char[1];
|
||||
reader.read(lengthBytes);
|
||||
if (lengthBytes[0] == ';') {
|
||||
break;
|
||||
}
|
||||
response.append(lengthBytes[0]);
|
||||
|
||||
}
|
||||
if (response != null) {
|
||||
System.out.println("Server response: " + response);
|
||||
log.info("respon:{}",response.toString());
|
||||
} else {
|
||||
System.out.println("No response from server. Closing connection.");
|
||||
}
|
||||
String respon = response.toString();
|
||||
respon = respon.replace(";","");
|
||||
String[] strings = respon.toString().split( ",");
|
||||
|
||||
Map<String, Integer> charCountMap = new HashMap<>();
|
||||
|
||||
// 统计每个字符的数量
|
||||
for (String c : strings) {
|
||||
charCountMap.put(c, charCountMap.getOrDefault(c, 0) + 1);
|
||||
}
|
||||
|
||||
// 找出数量最多的字符及其次数
|
||||
String mostFrequentChar = null;
|
||||
int len = 0;
|
||||
for (Map.Entry<String, Integer> entry : charCountMap.entrySet()) {
|
||||
if (entry.getValue() > len) {
|
||||
mostFrequentChar = entry.getKey();
|
||||
len = entry.getValue();
|
||||
}
|
||||
}
|
||||
|
||||
len = len-1;
|
||||
ConfigProperties.SmokeBoxType smokeBoxType = map.get(mostFrequentChar);
|
||||
//计算个数
|
||||
if (smokeBoxType != null && smokeBoxType.getNumOfLayers() != 0 && smokeBoxType.getNumLayers() != 0 ){
|
||||
algorithmPojo.setGoodsTypeResult(smokeBoxType.getCode());
|
||||
algorithmPojo.setGoodsNumberResult( len / smokeBoxType.getNumOfLayers() * smokeBoxType.getNumLayers());
|
||||
}
|
||||
if(algorithmPojo.getGoodsType().equals(algorithmPojo.getGoodsTypeResult())){
|
||||
algorithmPojo.setResult(1);
|
||||
}else {
|
||||
algorithmPojo.setResult(0);
|
||||
}
|
||||
|
||||
|
||||
// 关闭连接
|
||||
socket.close();
|
||||
|
||||
System.out.println("Connection closed");
|
||||
} catch (IOException e) {
|
||||
algorithmPojo.setResult(0);
|
||||
log.error("连接失败:"+ip,e);
|
||||
} catch (InterruptedException e) {
|
||||
algorithmPojo.setResult(0);
|
||||
}catch (Exception e){
|
||||
algorithmPojo.setResult(0);
|
||||
log.error("连接失败:"+ip,e);
|
||||
}
|
||||
return algorithmPojo;
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
System.out.println(4/1*13);
|
||||
}
|
||||
|
||||
void updateTaskId(BufferedReader reader ,BufferedWriter writer ,AlgorithmPojo algorithmPojo){
|
||||
try {
|
||||
String message = "taskId:"+algorithmPojo.getTaskId();
|
||||
|
||||
writer.write(message);
|
||||
writer.flush();
|
||||
System.out.println("Sent message to server: " + message);
|
||||
|
||||
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Reference in New Issue