# echo-server **Repository Path**: qingwu123456/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命令支持**:客户端发送"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 (日志记录) ## 端口配置 - 默认服务器端口: 8888 - 端口范围: 8888-8898 (自动端口查找) - 客户端自动连接: 客户端会自动在端口范围内查找运行中的服务器 ## 端口管理特性 - **自动端口查找**: 如果默认端口8888被占用,服务器会自动尝试8888-8898范围内的其他端口 - **智能客户端连接**: 客户端会自动查找并连接到运行中的服务器,无需手动指定端口 - **端口冲突解决**: 解决了"Address already in use: bind"错误 - **连接超时**: 客户端连接设置1秒超时,避免长时间等待 ## 测试 ### 基本功能测试 输入任意消息到客户端,服务器将回传相同的消息加上"Echo: "前缀。 ### TIME命令测试 输入"TIME"到客户端,服务器将返回当前系统时间,格式为"Server Time: yyyy-MM-dd HH:mm:ss"。 ### 多客户端测试 1. 启动服务器后,可以同时打开多个客户端终端 2. 每个客户端都可以独立发送消息和接收响应 3. 服务器会为每个客户端连接打印详细的日志信息 ### 断开连接测试 输入"bye"可断开当前客户端连接,服务器会记录断开日志。