桀溺聊天室
1. 需求分析
IM技术作为互联网实时互动场景的底层架构,在整个互动生态圈的价值斐然。
随着互联网的发展,人们对于实时互动的要求越来越高。于是,IM技术不止应用于QQ、微信这样的面向聊天的软件,它其实有着宽广的应用场景和足够有想象力的前景。甚至在不知不觉之间,IM系统已经根植于我们的互联网生活中,成为各大App必不可少的模块。
2. 项目概述
-
开发环境及使用工具
开发环境: deepin 15.9 X86_64
开发工具: Vim,gcc编译器
绘图工具: ProcessOn
-
使用说明
-
安装说明
git clone git@github.com:liutingjieni/chatroom_lt.gitcd chatroom_lt
-
使用说明
gcc server.c server_deal.c server_init.c MYSQL.c -I/usr/include/mysql/ -lmysqlclient -lpthread
./a.out
gcc client.c client_init.c client_io.c client_menu.c -lpthread
./a.out
提示:如果要进行跨级测试,请务必改变client_init.c 文件中#define IP "服务器IP地址"
-
-
数据结构说明
本项目中主要是进行线程,进程,网络编程知识的综合运用
所涉及到的数据结构并不是很多,主要是以下两种:
3. 模块设计
-
client端
客户端登录成功之后,新开一个线程,循环收包。
-
server端
服务端采用epoll加单线程模型
4. 文件说明
client_init.c
文件名 | 位置 |文件描述 | 位置 | 文件描述 |
---|---|---|
client.c | client端main()函数 | |
client_menu.c | 菜单打印以及接受客户端请求传到client_io.c中处理 | |
client_io.c | 所有发送函数和接收函数 | |
client_init.c | 连接客户端与服务端 | |
server.c | server端main()函数 | |
server_init.c | 连接客户端,将conn_fd加入epoll内核事件表,接受读事件 | |
server_deal.c | 处理读事件 | |
MYSQL.c | 存储,查询,更新 |
5. 功能确定
6. 总结
还是有很多并没有解决的问题,架构问题,代码可读性,代码健壮性,高并发处理上,内存与磁盘速度不一致问题,弱网下消息收发失败等等。但是我觉得现阶段没有必要去死扣着不放,因为所学的知识有限,硬要改也是可以的,但是即使改出来了,也对自身没有多大裨益。有机会,一定要重写一遍,但是一定要等到学到新知识了,有了更好的思路了。