# MiniChat-cpp **Repository Path**: zihoosoon/mini-chat-cpp ## Basic Information - **Project Name**: MiniChat-cpp - **Description**: 使用 C++ 实现的多人聊天室,是一个 C++ 和系统编程的学习项目 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2024-04-02 - **Last Updated**: 2024-04-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # MiniChat-cpp:C++ 实现的多人聊天室 该项目是参考自 [Redis](https://redis.io/) 作者 [antirez](https://github.com/antirez) 的教学项目 [smallchat](https://github.com/antirez/smallchat),并使用 C++ 重写的**网络编程学习项目**。 该项目主要功能如下: - `ChatServer` 启动后,`client` 可以通过 `ip + port` 的方式连接到 `server` - `client` 可以通过向 `server` 发送如下格式消息: `/nick nickname`,进行 `nickname` 的修改 - 加入到 `ChatServer` 中的 `client`,服务器负责 `client` 发送消息间的转发,使得 `client` 可以互相发送消息 - `server` 使用字典数据结构以在 `ChatServer` 中保存 `client` 的状态 - `server` 使用 `select` 处理 `client` 的连接 + 消息发送 ## 使用方式 编译: ```shell mkdir build && cd build cmake .. make ``` ![45f85b1fc8fa681426d455930f583623](./assets/45f85b1fc8fa681426d455930f583623.png) 之后在当前工作目录的 `bin` 目录下有对应的可执行文件生成: - `server` 通过 `./server` 启动 `ChatServer` 即可,之后就可以进行 `client` 的连接与消息发送了 - ![beb4aef758e9d3a07e8220c5ce3838a1](./assets/beb4aef758e9d3a07e8220c5ce3838a1.png) - ![8082a9bdaaccdc9be4ebfa9253ef0656](./assets/8082a9bdaaccdc9be4ebfa9253ef0656.png) 该项目待实现的功能: - [ ] `server` 端使用日志而不是简单的输出到终端 - [ ] `server` 端使用更高级的 `API` :利用 `Epoll` 与线程池实现多线程的 `client` 消息处理 - [ ] 实现 `client` 端,可以连接至 `server`,并发送/接收消息 - [ ] 实现更完善的消息处理,当前默认为 `readbuf` 可以正常保存一条消息