|
@@ -4,7 +4,9 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Component;
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
|
|
|
import javax.annotation.PostConstruct;
|
|
import javax.annotation.PostConstruct;
|
|
|
|
|
+import javax.annotation.PreDestroy;
|
|
|
import java.io.*;
|
|
import java.io.*;
|
|
|
|
|
+import java.net.ServerSocket;
|
|
|
import java.net.Socket;
|
|
import java.net.Socket;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -16,28 +18,56 @@ import java.net.Socket;
|
|
|
*/
|
|
*/
|
|
|
@Component
|
|
@Component
|
|
|
public class ExecutionServer {
|
|
public class ExecutionServer {
|
|
|
- @Autowired
|
|
|
|
|
- private TcpServer tcpServer;
|
|
|
|
|
private BufferedReader reader;
|
|
private BufferedReader reader;
|
|
|
private BufferedWriter writer;
|
|
private BufferedWriter writer;
|
|
|
|
|
+ private ServerSocket server;
|
|
|
|
|
+ private Socket client;
|
|
|
|
|
+ private int serverPort = 15678;
|
|
|
|
|
+
|
|
|
@PostConstruct
|
|
@PostConstruct
|
|
|
- public void init() {
|
|
|
|
|
|
|
+ public void init(){
|
|
|
|
|
+ Runnable func0 = this::startServer;
|
|
|
|
|
+ Thread thread = new Thread(func0);
|
|
|
|
|
+ thread.start();
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @PreDestroy
|
|
|
|
|
+ public void closeResource(){
|
|
|
try {
|
|
try {
|
|
|
- // 等待 TcpServer 初始化完成
|
|
|
|
|
- tcpServer.awaitInitialization();
|
|
|
|
|
- reader = tcpServer.getReader();
|
|
|
|
|
- writer = tcpServer.getWriter();
|
|
|
|
|
- if (reader == null || writer == null) {
|
|
|
|
|
- throw new IOException("Reader or Writer is not available.");
|
|
|
|
|
- }
|
|
|
|
|
- System.out.println("Reader and Writer initialized successfully.");
|
|
|
|
|
|
|
+ if (reader != null) reader.close();
|
|
|
|
|
+ if (writer != null) writer.close();
|
|
|
|
|
+ if (client != null) client.close();
|
|
|
|
|
+ if (server != null) server.close();
|
|
|
} catch (IOException e) {
|
|
} catch (IOException e) {
|
|
|
e.printStackTrace();
|
|
e.printStackTrace();
|
|
|
- } catch (InterruptedException e) {
|
|
|
|
|
- throw new RuntimeException(e);
|
|
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 启动服务器并等待客户端连接
|
|
|
|
|
+ */
|
|
|
|
|
+ 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 data) {
|
|
public String ExecutionData(String data) {
|
|
|
System.out.println("writer==================="+writer);
|
|
System.out.println("writer==================="+writer);
|
|
|
System.out.println("reader==================="+reader);
|
|
System.out.println("reader==================="+reader);
|