| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- package com.zksy.lamp.server;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Component;
- import javax.annotation.PostConstruct;
- import javax.annotation.PreDestroy;
- import java.io.*;
- import java.net.ServerSocket;
- import java.net.Socket;
- /**
- * @author Administrator
- * @version 1.0
- * @project dh-server-micro
- * @description 指令执行
- * @date 2025/2/10 16:25:14
- */
- @Component
- public class ExecutionServer {
- private BufferedReader reader;
- private BufferedWriter writer;
- private ServerSocket server;
- private Socket client;
- private int serverPort = 15678;
- @PostConstruct
- public void init(){
- Runnable func0 = this::startServer;
- Thread thread = new Thread(func0);
- thread.start();
- }
- @PreDestroy
- public void closeResource(){
- try {
- if (reader != null) reader.close();
- if (writer != null) writer.close();
- if (client != null) client.close();
- if (server != null) server.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- /**
- * 启动服务器并等待客户端连接
- */
- public void startServer() {
- try {
- System.out.println("本机作为服务端");
- System.out.println("本机端口:" + serverPort);
- server = new ServerSocket(serverPort);
- System.out.println("等待客户机的连接");
- client = server.accept();
- System.out.println("连接成功");
- String clientAddr = client.getRemoteSocketAddress().toString().substring(1);
- String[] clientAddrs = clientAddr.split(":");
- System.out.println("客户端IP:" + clientAddrs[0] + " 端口:" + clientAddrs[1]);
- reader = new BufferedReader(new InputStreamReader(client.getInputStream(), "GB2312"));
- writer = new BufferedWriter(new OutputStreamWriter(client.getOutputStream(), "GB2312"));
- System.out.println("测试完成!");
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- public String ExecutionData(String msg) {
- try {
- System.out.println("第1路闭合,发送指令:"+msg);
- //发送数据
- writer.write(msg);
- writer.flush();
- //读数据
- msg = reader.readLine();
- System.out.println("msg================:"+msg);
- if (msg != null) {
- msg = msg.replace("\r\n", "\\r\\n");
- } else {
- System.out.println("接收到的消息为 null,重新建立连接...");
- // 关闭当前连接资源
- closeResource();
- // 重新启动服务器并等待客户端连接
- startServer();
- // 重新发送指令
- writer.write(msg);
- writer.flush();
- msg = reader.readLine();
- System.out.println("重新连接后接收到的消息:" + msg);
- }
- msg = msg.replace("\r\n", "\\r\\n");
- System.out.println("设备应答:" + msg);
- System.out.println("指令执行成功!");
- Thread.sleep(100);
- return msg;
- } catch (Exception e) {
- e.printStackTrace();
- }
- return "发送指令:"+msg+"失败";
- }
- }
|