| | |
| | | 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(); |
| | | |
| | | exec(runPy); |
| | | |
| | | return rs; |
| | | } catch (Exception ex) { |
| | |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 执行命令 |
| | | * |
| | | * @param cmd 命令 |
| | | */ |
| | | public void exec(String cmd) { |
| | | try { |
| | | Process process = Runtime.getRuntime().exec(cmd); |