package com.yssh.service;
|
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.stereotype.Service;
|
|
import java.io.BufferedReader;
|
import java.io.InputStreamReader;
|
import java.io.PrintWriter;
|
import java.net.Socket;
|
|
/**
|
* Socket服务类
|
* @author WWW
|
* @date 2023-11-06
|
*/
|
@Service
|
public class SocketService {
|
/**
|
* Socket的IP
|
*/
|
@Value("${socket.ip}")
|
private String ip;
|
|
/**
|
* Socket的端口
|
*/
|
@Value("${socket.port}")
|
private int port;
|
|
/**
|
* Socket的端口
|
*/
|
@Value("${cmd.runPy}")
|
private String runPy;
|
|
private final Logger logger = LoggerFactory.getLogger(this.getClass());
|
|
/**
|
* 发送消息
|
*/
|
public String sendMsg(String msg) throws Exception {
|
try {
|
// 创建Socket对象,指定服务端的IP地址和端口号
|
Socket socket = new Socket(ip, port);
|
|
// 获取输入流和输出流 输入流和输出流是通过socket对象来进行数据传输的。
|
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
|
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
|
|
// 将用户输入的信息发送给服务端
|
out.println(msg);
|
|
// 接收服务端的响应并打印
|
String rs = in.readLine();
|
|
socket.close();
|
|
// 执行Python脚本
|
exec(runPy);
|
|
return rs;
|
} catch (Exception ex) {
|
logger.error(ex.getMessage(), ex);
|
throw ex;
|
}
|
}
|
|
/**
|
* 执行命令
|
*
|
* @param cmd 命令
|
*/
|
public void exec(String cmd) {
|
try {
|
Process process = Runtime.getRuntime().exec(cmd);
|
process.waitFor();
|
} catch (Exception ex) {
|
logger.error(ex.getMessage(), ex);
|
}
|
}
|
}
|