From b91d6e0191a64cb873e0c3c6580564773fa8d961 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BD=98=E6=B6=A6=E6=9D=A8?= <15152700899@163.com> Date: Fri, 5 Dec 2025 11:22:58 +0800 Subject: [PATCH] echo-server --- src/main/java/com/example/echo/EchoClient.java | 9 ++++++++- src/main/java/com/example/echo/EchoServer.java | 15 ++++++++++----- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/example/echo/EchoClient.java b/src/main/java/com/example/echo/EchoClient.java index 12bf370..49d429b 100644 --- a/src/main/java/com/example/echo/EchoClient.java +++ b/src/main/java/com/example/echo/EchoClient.java @@ -2,6 +2,8 @@ package com.example.echo; import java.io.*; import java.net.*; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; /** * Echo服务器的客户端测试类 @@ -10,12 +12,14 @@ import java.net.*; public class EchoClient { private static final String SERVER_HOST = "localhost"; private static final int SERVER_PORT = 8888; + private static final ExecutorService threadPool = Executors.newFixedThreadPool(10); public static void main(String[] args) { try (Socket socket = new Socket(SERVER_HOST, SERVER_PORT); PrintWriter out = new PrintWriter(socket.getOutputStream(), true); BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream())); BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in))) { + System.out.println("客户端已连接: " + socket.getRemoteSocketAddress()); System.out.println("已连接到Echo服务器: " + SERVER_HOST + ":" + SERVER_PORT); System.out.println("输入消息发送到服务器 (输入 'bye' 断开连接):"); @@ -27,8 +31,11 @@ public class EchoClient { // 如果用户输入bye,则断开连接 if ("bye".equalsIgnoreCase(userInput.trim())) { - System.out.println("断开连接..."); + System.out.println("客户端断开连接: " + socket.getRemoteSocketAddress()); break; + } else if ("TIME".equalsIgnoreCase(userInput.trim())) { + out.println("当前系统时间: " + new java.util.Date()); + continue; } // 读取服务器的响应 diff --git a/src/main/java/com/example/echo/EchoServer.java b/src/main/java/com/example/echo/EchoServer.java index f55f684..533a7e0 100644 --- a/src/main/java/com/example/echo/EchoServer.java +++ b/src/main/java/com/example/echo/EchoServer.java @@ -5,19 +5,20 @@ import java.net.*; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; +import java.util.Date; /** * 单客户端Echo服务器 * 这个服务器一次只处理一个客户端连接 */ public class EchoServer { - private static final int PORT = 8888; + private static final int PORT = 8889; private ServerSocket serverSocket; private boolean running = false; private ExecutorService executor; public EchoServer() { - executor = Executors.newSingleThreadExecutor(); + executor = Executors.newCachedThreadPool(); } /** @@ -32,8 +33,7 @@ public class EchoServer { System.out.println("等待客户端连接..."); Socket clientSocket = serverSocket.accept(); System.out.println("客户端已连接: " + clientSocket.getRemoteSocketAddress()); - - handleClient(clientSocket); + executor.execute(() -> handleClient(clientSocket)); } /** @@ -48,8 +48,13 @@ public class EchoServer { while ((inputLine = in.readLine()) != null) { if ("bye".equalsIgnoreCase(inputLine.trim())) { - System.out.println("客户端请求断开连接"); + System.out.println("客户端请求断开连接: " + clientSocket.getRemoteSocketAddress()); break; + } else if ("TIME".equalsIgnoreCase(inputLine.trim())) { + String currentTime = "当前系统时间: " + new java.util.Date(); + System.out.println("客户端 " + clientSocket.getRemoteSocketAddress() + " 请求时间: " + currentTime); + out.println(currentTime); + continue; } System.out.println("收到消息: " + inputLine); -- Gitee