# echo-server **Repository Path**: lq0204/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编程 - 线程池 ## 功能特性 - **多客户端并发连接** - 支持多个客户端同时连接 - **消息回声功能** - 服务器将客户端消息原样返回 - **时间查询功能** - 发送"TIME"命令获取服务器当前时间 - **连接日志记录** - 详细记录客户端连接、断开和消息日志 - **优雅断开连接** - 支持"bye"命令断开连接 - **完善的错误处理** - 包含详细的错误信息和异常处理 ## 项目结构 ``` 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 (日志记录) ## 端口配置 - 默认服务器端口: 8889 - 客户端默认连接地址: localhost:8889 ## 测试 ### 基本功能测试 输入任意消息到客户端,服务器将回传相同的消息加上"Echo: "前缀。 ### 时间查询测试 输入"TIME"命令,服务器将返回当前系统时间。 ### 多客户端测试 可以同时启动多个客户端连接到服务器,每个客户端独立通信。 ### 断开连接测试 输入"bye"可断开当前客户端连接。 ### 日志输出示例 ``` [2023-12-05 14:30:15] Echo Server已启动,监听端口: 8889 [2023-12-05 14:30:15] 等待客户端连接... [2023-12-05 14:30:20] 新客户端连接: /127.0.0.1:52341 [2023-12-05 14:30:20] 开始与客户端通信: /127.0.0.1:52341 [2023-12-05 14:30:25] 收到来自 /127.0.0.1:52341 的消息: Hello [2023-12-05 14:30:28] 收到来自 /127.0.0.1:52341 的消息: TIME [2023-12-05 14:30:28] 向客户端 /127.0.0.1:52341 返回时间: 2023-12-05 14:30:28 [2023-12-05 14:30:30] 客户端请求断开连接: /127.0.0.1:52341 [2023-12-05 14:30:30] 客户端连接已关闭: /127.0.0.1:52341 ```