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(); // 执行Python脚本 exec(runPy); socket.close(); 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); } } }