# echo-server **Repository Path**: zhou-jinghao1107/echo-server ## Basic Information - **Project Name**: echo-server - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 41 - **Created**: 2025-12-05 - **Last Updated**: 2025-12-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Echo Server 一个简单的TCP回声服务器,实现客户端与服务器之间的消息回传功能。 ## 项目简介 本项目包含一个支持多客户端并发访问的TCP回声服务器和相应的客户端,服务器将客户端发送的每条消息原样返回给客户端,直到客户端发送"bye"断开连接。 ## 技术栈 - Java 17 - Maven - TCP Socket编程 - 线程池 ## 功能特性 - 多客户端并发连接处理 - 消息回声功能 - 支持断开连接命令("bye") - 支持时间查询命令("time") - 连接/断开日志记录 - 高效的线程池管理 ## 项目结构 ``` src/ ├── main/ │ └── java/ │ └── com/example/echo/ │ ├── EchoServer.java # 服务器端实现 │ └── EchoClient.java # 客户端测试实现 ``` ## 使用方法 ### 1. 编译项目 ```bash mvn clean compile ``` ### 2. 运行服务器 ```bash mvn exec:java -Dexec.mainClass="com.example.echo.EchoServer" ``` 或直接运行: ```bash java -cp target/classes com.example.echo.EchoServer ``` ### 3. 运行客户端 另开一个终端,运行: ```bash mvn exec:java -Dexec.mainClass="com.example.echo.EchoClient" ``` 或直接运行: ```bash java -cp target/classes com.example.echo.EchoClient ``` ## 依赖 - slf4j-simple (日志记录) ## 端口配置 - 默认服务器端口: 8888 - 客户端默认连接地址: localhost:8888 ## 测试 输入任意消息到客户端,服务器将回传相同的消息加上"Echo: "前缀。输入"bye"可断开连接。输入"time"可获取服务器当前时间。 ## 设计说明 ### 多客户端支持 服务器使用线程池处理多个客户端连接,每个客户端连接由独立线程处理,实现了真正的并发访问。 ### 线程优化 使用`Executors.newCachedThreadPool()`替代原来的单线程执行器,可以根据需要创建新线程,但会重用之前构造的线程。对于短期异步任务,这种线程池通常是首选。 ### 特殊命令支持 除了基本的回声功能外,还支持"TIME"命令,当客户端发送"TIME"时,服务器会返回当前系统时间。 ### 日志记录 详细记录了客户端的连接和断开过程,以及各种操作的日志信息,便于调试和监控。