Linux下实现聊天室
聊天室
项目需求
账号管理
- 实现登录、注册、注销
- 实现找回密码(提高)
好友管理
- 实现好友的添加、删除、查询操作
- 实现显示好友在线状态
- 禁止不存在好友关系的用户间的私聊
- 实现屏蔽好友消息
- 实现好友间聊天
群管理
- 实现群组的创建、解散
- 实现用户申请加入群组
- 实现用户查看已加入的群组
- 实现群组成员退出已加入的群组
- 实现群组成员查看群组成员列表
- 实现群主对群组管理员的添加和删除
- 实现群组管理员批准用户加入群组
- 实现群组管理员/群主从群组中移除用户
- 实现群组内聊天功能
聊天功能
对于 私聊和群组 的聊天功能均需要实现:
- 实现查看历史消息记录
- 实现用户间在线聊天
- 实现在线用户对离线用户发送消息,离线用户上线后获得通知
- 实现文件发送的断点续传
- 实现在线发送文件
- 实现在线用户对离线用户发送文件,离线用户上线后获得通知/接收
服务器
1.使用epoll监听套间字,使用epoll监听客户端是否有读操作,如果有读操作,就将该套间字从监听红黑树摘下,然后读取客户端发送的要执行的操作,将操作放入线程池队列中执行,等操作执行完再将套间字放到监听红黑树上。
2.ET边沿触发模式
3.使用redis数据库
4.使用nlohmann/json序列化和反序列化
5.使用线程池对任务进行处理
客户端
1.使用两个线程,一个线程从服务器读取数据,实现弹窗功能,即有人添加好友或有人发送消息会有一个消息提示。
2.聊天的时候创建一个新线程,一个线程专门用来发送消息,一个线程专门用来读取消息。聊天结束后读取的线程自动销毁。
代码github地址
https://github.com/c1336658570/task/tree/main/chatroom
Linux下实现聊天室相关推荐
- linux下多进程聊天室,从0实现基于Linux socket聊天室-多线程服务器模型-1
前言 Socket在实际系统程序开发张中,应用非常广泛,也非常重要.实际应用中服务器经常需要支持多个客户端连接,实现高并发服务器模型显得尤为重要.高并发服务器从简单的循环服务器模型处理少量网络并发请求 ...
- Linux多人聊天室之后篇
文章目录 前言 一.前期工作 二.项目框架 三.伪代码流程 四.源代码 五.结果显示 附录 前言 本文承接上一篇<Linux多人聊天室之前篇>的内容,记录的是多人聊天室室如何实现的. 一. ...
- 基于Linux实现的聊天室小程序
基于linux平台制作的简单聊天室程序,可以通过修改宏定义USER_LIMIT进而修改支持的用户个数 不涉及任何外部库,直接g++编译即可 涉及到:socket编程,零拷贝文件描述符数据splice, ...
- linux大作业聊天室报告,Linux聊天室系统期末大作业.docx
NANCHANG UNIVERSITY <Linux 系统编程>课程设计 题目:Linux 聊天室报告 学院:软件学院 专业:计算机软件 班级:计软 121 班 姓名:李俊楠 起讫日期: ...
- Linux多人聊天室之前篇
文章目录 前言 一.聊天模式框架 二.代码 三.结果显示: 四.网络编程通用API汇总 前言 本文的内容是多人聊天室的前期工作,记录的是一个客户端和一个服务端聊天,尚未涉及到多线程.若想看多线程的内容 ...
- Linux网络编程--聊天室客户端程序
聊天室客户端程序 #define _GNU_SOURCE 1 #include <sys/types.h> #include <sys/socket.h> #include & ...
- linux多人聊天室 qt,Qt编程详解--网络通信之基于TCP的多人聊天室
一.了解TCP的通信过程 Qt中封装了TCP协议 QTcpServer类负责服务端: 1.创建QTcpServer对象 2.监听listen需要的参数是地址和端口号 3.当有新的客户端连接成功时会发射 ...
- Linux下的聊天软件
1.米聊.界面还可以. 官网:http://www.miliao.com/pc_introduction.html 2.点"立即下载",选择linux版本.安装版. ------- ...
- Linux 命名管道 聊天室
目录 一.功能说明 二.Bug集中营 2.1 关于群聊的问题 2.2 关于私聊的问题 2.3 关于用户名的问题 2.4 关于客户端界面的问题 2.4.1 时间显示问题 2.4.2 握手消息问题 2.5 ...
最新文章
- 教师教学的“五个转化”能力
- 学习是一个漫长不能松懈的过程
- 判断一个数组是否是另一个数组的子集
- nginx下部署vue项目
- 白瑜庆:知乎基于Kubernetes的kafka平台的设计和实现
- [vue] vue生命周期总共有几个阶段?
- java创建文件夹和文件_Java创建文件夹与创建文件
- ann matlab,MatlabANN工具箱实用指南.doc
- LabVIEW编程LabVIEW开发研华PCI 1756例程与相关资料
- Composer Class Fxp\Composer\AssetPlugin\Repository\NpmRepository does not exist
- Python数据分析及可视化-招聘网站岗位数据分析
- bin文件转换成hex的方法
- python自动化运维平台搭建_OMserver自动化运维平台搭建及测试
- css margin为什么重叠,CSS 外边距(margin)重叠及防止方法
- 朱松纯教授:可解释性是人工智能获得人类信任的关键
- Untiy InputSystem(一) 新旧API对比
- JavaScript 前端简单工厂模式、工厂方法模式、抽象工厂模式优缺点及详解 — 设计模式《二》
- Python_阿里云物联网_数据/图像/音频传输
- 测试理论-测试用例设计 (一) --- 正交表分析法
- 计算机点火工作原理,简述汽车发动机ECU工作原理