# socketchat **Repository Path**: huang_wei-e/socketchat ## Basic Information - **Project Name**: socketchat - **Description**: 利用JavaSocket和多线程知识制作的简单的网络聊天室 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-07-01 - **Last Updated**: 2022-07-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # `SocketChat`开发日志 ## 1. 项目说明 在学习完多线程和`Socket`后我就开始思考微信之类的远程通信软件的底层原理自然是通过`Socket`和多线程来进行开发的,虽然他们会使用一些高并发的网络通信框架,在这之后就在思考能否自己用`Socket`和多线程来实现一个简单的群聊系统,所以本项目将开发一款基于Java`Socket`和多线程的简易聊天室软件。在软件中需要先实现最基本的通信问题再使用线程池和网络通信框架来进行进一步的优化 ### 1.1 项目基本功能 #### 1.1.1 服务端开启服务 在一台服务器或`PC`上运行程序即可在指定端口打开`HTTP`服务,开启一个`BIO`不断等待客户端的连接,并且在有新的客户端连接或就得客户端退出后都能采用广播的方式向所有在聊天室中的用户广播信息 #### 1.1.2 客户端连接 在客户机上运行程序能够自动进入聊天室,并要求输入该聊天客户端的昵称,并且能够在任意时候向在该聊天室的所有用户发送消息,并实时监听来自服务器和其他客户机所发出的消息 #### 1.1.3 从第三方接口获取天气信息 当用户发出请求时,服务端能够通过第三方接口查询目的城市的天气信息,并将详细的天气信息传输给发出请求的客户端。 #### 1.1.4 文件传输 不同客户端设备之间能够相互传输大型文件,传输方式采用多线程分割文件的方式进行传输,并且如果中途传输失败能够通过断点续传的方式继续上一次的传输内容 ## 2. 版本开发日志 ### 2.1 `v1.0`版本(2020.10.4) #### 2.1.1 版本说明 该版本是开发的第一个版本,在该版本中只实现了聊天室的基本功能并且未经线程池和网络通信框架的优化,在使用过程中比较笨拙且消耗的资源比较大 ### 2.2 `v1.0.1`版本(2020.10.5) #### 2.2.1 版本说明 该版本使用方法引用的方式创建线程,增加了代码整体的可读性