引言
项目概要
- 该项目为linux下的简单聊天室,主要实现了聊天和简单的文件传输。
实现的功能
1.好友管理:
(1)添加好友
(2)删除好友
(3)私聊
(4)查看私聊记录
(5)查看好友列表
2.群管理:
(1)创建群
(2)加群
(3)退群
(4)解散群
(5)禁言
(6)解除禁言
(7)群聊
(8)查看群聊记录
(9)查看用户所在群列表
(10)查看群好友列表
3.文件传输
简单的文件传输。
4.数据库
利用mysqlC语言的API函数,应用数据库对聊天记录等信息进行存储。
5.JSON
利用JSONC语言的API函数,应用json字符串保存所要传输的数据,进行数据传输。
6.多路复用
epoll实现服务端的多路复用,保证服务端数据的稳定性。
术语表
序号 | 术语 | 说明性定义 |
---|---|---|
1 | C/S | Client/Sever模型 |
2 | Epoll | Linux下处理并发的API |
3 | json | 一种轻量级的数据交换格式 |
4 | mysql | 关系型数据库管理系统 |
参考资料
书籍 | 作者 |
---|---|
《Linux_C编程实战》 | 董永青 |
《Linux_C编程从基础到实践》 | 佚名 |
《Linux网络编程》 | 宋敬彬 |
项目开发环境
deepin 15.6 gcc编译器
程序运行环境
1.安装Mysql数据库
2.下载cJSON相关源代码
数据结构说明
数据结构 | 使用之处 |
---|---|
数组 | 使用数组,主要是在TCP发送包以及各种功能实现时所使用的。存储字符串,标识符…,这样使功能实现更加便利。 |
数据库 | 主要用来存储用户账号,密码,好友信息等等一些比较重要且需要长期保存的东西。 |
模块设计
client总体设计:
扫描二维码关注公众号,回复:
3092811 查看本文章
client_recv模块
功能声明:此模块负责客户端收包
client_chat模块
功能说明:此模块负责客户端信息交流
sever:总体设计
epoll_sever模块
功能说明:此模块负责服务器端的事件管理
sever_menu模块
功能说明:此模块负责服务器端的事件处理
已知存在的问题和优化方案
1.界面不是很友好,没有消息盒子
2.容错处理不够完整,非合理的输入可能会导致程序崩溃。
可优化处
1.可以建一个队列来作为消息盒子,保证界面的美观性,增加容错操作。