# 一个在线聊天室系统 **Repository Path**: linyugeng/an_online_chat_system ## Basic Information - **Project Name**: 一个在线聊天室系统 - **Description**: No description available - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-02-09 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 一个在线聊天室系统 #### 介绍 这是一个基于Java开发的在线聊天室服务端,客户端没有上传,使用Java的Socket进行业务的实现. #### 安装教程 导入eclipse即可运行 #### 使用说明 1. 更改配置文件中的端口,最大在线人数,以及使用的字符集(服务端和客户端要统一,否则会出现乱码的现象) 2. 运行服务端 #### 参与贡献 ##### 主要编写人员: @NameLessMan ##### 测试人员: - @一颗山竹QwQ - @锦锦小朋友QAQ - @Tuffy - @夕阳 - @三斤 #### 项目结构 ##### 服务端 ``` -src --Config ---Config.java --Entity ---Client.java --Server ---Server.java --Util ---ClientManager.java ---IDManager.java ---HttpUtil.java ---RequestSender.java ---Replacer.java ``` ###### 说明 `Config.Config.java` ###### 该类用于配置服务端运行的参数,例如端口,最大在线人数,使用字符集,可以根据自己的需求进行配置 `Entity.Client.java` ###### 该类是客户端的实体类,当中包含客户端的基本属性,基本方法,例如接收客户端消息,向客户端发送消息等 `Server.Server.java` ###### 该类是服务端类,用于接收客户端连接请求,把客户端放入管理器,接收客户端消息和转发给其他客户端 `Util.ClientManager.java` ###### 该类是客户端管理器类,将客户端放入一个集合中进行管理 `Util.IDManager.java` ###### 该类是ID管理器类,用于生成和记录各个客户端的唯一ID `Util.HttpUtil.java` ###### 该类HTTP工具类,用于发送和接受http请求和响应 `Util.RequestSender.java` ###### 该类HTTP请求发送工具类,用于发送和接受图灵聊天机器人的请求和响应 `Util.Replacer.java` ###### 该类用于和谐不良词汇 #### 原理 - `Server`类实例化`ServerSocket`监听客户端连接 - 客户端连接后,调用`Client`类中的`getNameAndID()`获取客户端昵称并生成客户端ID - 用`IDManager`类生成一个唯一的ID分配给客户端 - 将客户端放入`ClientManager`类管理 - 然后新建线程监听客户端的消息 - 监听到消息后,`Server`调用`Server`类的方法,转发给其他可客户端 - `Server`类调用`Client`类的方法将消息发给该实例对应的客户端. - 若客户端消息开头为“@机器人”,则转发给机器人并接受机器人响应,并转发给其他客户端 - 当`Client`类的`getClientMessage()`方法报错或`readLine()`方法返回`null`时判断客户端已经掉线 - 客户端掉线则调用`IDManager`类和`ClientManager`类的`removeClient()`方法和`removeID()`方法删除掉该客户端和ID